假设代理地址是10.10.10.10;端口是:8080.
设置代理地址如下:
curl<-getCurlHandle(proxy="10.10.10.10:8080");
getURL("http://baidu.com",curl=curl)
library(XML)
library(RCurl)
u ="http://en.wikipedia.org/wiki/List_of_countries_by_population"
tables = readHTMLTable(u)
tables
> .Machine
$double.eps
[1] 2.220446e-16
$double.neg.eps
[1] 1.110223e-16
$double.xmin
[1] 2.225074e-308
$double.xmax
[1] 1.797693e+308
$double.base
[1] 2
$double.digits
[1] 53
$double.rounding
[1] 5
$double.guard
[1] 0
$double.ulp.digits
[1] -52
$double.neg.ulp.digits
[1] -53
$double.exponent
[1] 11
$double.min.exp
[1] -1022
$double.max.exp
[1] 1024
$integer.max
[1] 2147483647
$sizeof.long
[1] 4
$sizeof.longlong
[1] 8
$sizeof.longdouble
[1] 16
$sizeof.pointer
[1] 8
需要安装 MySQL ODBC 5.1Driver和RODBC包,本人操作系统是win7;
1、进入“控制面板——系统和安全——管理工具——数据源(ODBC)”;
2、点击“添加”按钮,选择MySQL的驱动程序ODBC 5.1 Driver,创建新的数据源;
3、配置数据源信息,Data Source Name名字任取,TCP/IP Server和Port为数据库所在的IP地址和端口,
User为用户名,Password为密码,Database为需选择的数据库名,可以点Test按钮测试连接是否成功,
点“Details”可以选择连接数据库的编码,点“OK”键结束配置;
4、R语言中连接数据库:
library(RODBC);
channel = odbcConnect(‘test’, uid=’****’,pwd=’****’,
DBMSencoding=’utf8′);
test:为配置信息中的数据源名称;
uid:为数据源中设置的用户名;
pwd:为数据源中设置的密码;
DBMSencoding:与数据源设置的编码保持一致;
5、在R中使用SQL语言查询:
sqlQuery(channel,’select * from mytable’);
testData=matrix(sample(1:4,size=10*12,replace=TRUE),c(10,12))#随机测试数据
row.names(testData)=paste("指数",1:10)
colnames(testData)=paste(1:12,"月")
col_map=rainbow(4)#色表
plot.new()
par(mar=c(5,0,4,2))
plot.window(xlim=c(-3,13),ylim=c(0,11))
for(i in 1:10){
for(j in 1:12){
rect( j-.3,i-.3,j+.3,i+.3, col= col_map[testData[i,j]])
}
}
axis(1,1:12,colnames(testData))
text(-2.5,1:10,row.names(testData))
legend(‘top‘, paste(‘景气水平‘,1:4),fill=col_map,horiz=TRUE)
已知矩阵A,求A(A^TA)^{-1}A^T
matrix(rnorm(2000*1000),2000,1000)->A
system.time(tcrossprod(qr.Q(qr(A))))
用户 系统 流逝
14.23 0.31 14.65
system.time(tcrossprod(svd(A)$u))
用户 系统 流逝
29.63 0.17 30.01
library(MASS);
frac = function(x)
{
f= attr(fractions(x), "fracs");
numer = as.integer(gsub("/.*", "", f));
denom = as.integer(gsub(".*/", "", f));
denom[!grepl("/", f)] = 1;
return(data.frame(numerator = numer, denominator = denom));
}
x = seq(0, 1, by = 0.12);
frac(x);
numerator denominator
1 0 1
2 3 25
3 6 25
4 9 25
5 12 25
6 3 5
7 18 25
8 21 25
9 24 25
cancel.fraction |
约分 |
decimal2fraction |
小数转化为分数 |
gcd |
最大公约数 |
is.decimal |
是否有小数部分 |
is.even |
是否偶数 |
is.negative |
是否负数 |
is.odd |
是否奇数 |
is.positive |
是否正数 |
is.prim |
是否质数 |
is.real.positive |
是否正实数 |
is.whole |
是否整数 |
prime.factor |
质因数分解 |
primes |
生成质数序列 |
primlist |
1 到 9999999之间的质数列表 |
scm |
最小公倍数 |
library(ape)
# add colors randomly
plot(as.phylo(hc), type = "fan",tip.color = hsv(runif(15, 0.65, 0.95), 1, 1, 0.7), edge.color = hsv(runif(10,0.65, 0.75), 1, 1, 0.7), edge.width = runif(20, 0.5, 3), use.edge.length =TRUE, col = "gray80")
library(ape)
# vector of colors
mypal = c("#556270","#4ECDC4", "#1B676B", "#FF6B6B","#C44D58")
# cutting dendrogram in 5 clusters
clus5 = cutree(hc, 5)
# plot
op = par(bg = "#E8DDCB")
# Size reflects miles per gallon
plot(as.phylo(hc), type = "fan",tip.color = mypal[clus5], label.offset = 1, cex = log(mtcars$mpg, 10), col = "red")
apply函数(对一个数组按行或者按列进行计算):
使用格式为:
apply(X, MARGIN, FUN, ...)
其中X为一个数组;MARGIN为一个向量(表示要将函数FUN应用到X的行还是列),若为1表示取行,为2表示取列,为c(1,2)表示行、列都计算。
示例代码:
> ma <- matrix(c(1:4, 1, 6:8), nrow =2)
> ma
[,1] [,2] [,3][,4]
[1,] 1 3 1 7
[2,] 2 4 6 8
> apply(ma, c(1,2), sum)
[,1] [,2] [,3][,4]
[1,] 1 3 1 7
[2,] 2 4 6 8
> apply(ma, 1, sum)
[1] 12 20
> apply(ma, 2, sum)
[1] 3 7 7 15
函数tapply(进行分组统计):
使用格式为:
tapply(X, INDEX, FUN = NULL, ..., simplify= TRUE)
其中X通常是一向量;INDEX是一个list对象,且该list中的每一个元素都是与X有同样长度的因子;FUN是需要计算的函数;simplify是逻辑变量,若取值为TRUE(默认值),且函数FUN的计算结果总是为一个标量值,那么函数tapply返回一个数组;若取值为FALSE,则函数tapply的返回值为一个list对象。需要注意的是,当第二个参数INDEX不是因子时,函数 tapply() 同样有效,因为必要时 R 会用 as.factor()把参数强制转换成因子。
示例代码:
> fac <- factor(rep(1:3, length =17), levels = 1:5)
> fac
[1] 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2
Levels: 1 2 3 4 5
> tapply(1:17, fac, sum)
1 2 3 4 5
51 57 45 NA NA
> tapply(1:17, fac, sum, simplify =FALSE)
$`1`
[1] 51
$`2`
[1] 57
$`3`
[1] 45
$`4`
NULL
$`5`
NULL
> tapply(1:17, fac, range)
$`1`
[1] 1 16
$`2`
[1] 2 17
$`3`
[1] 3 15
$`4`
NULL
$`5`
NULL
#利用tapply实现类似于excel里的数据透视表的功能:
> da
year province sale
1 2007 A 1
2 2007 B 2
3 2007 C 3
4 2007 D 4
5 2008 A 5
6 2008 C 6
7 2008 D 7
8 2009 B 8
9 2009 C 9
102009 D 10
> attach(da)
> tapply(sale,list(year,province))
[1] 1 4 7 10 2 8 11 6 9 12
> tapply(sale,list(year,province),mean)
A BC D
2007 1 2 3 4
2008 5 NA 6 7
2009 NA 8 9 10
函数table(求因子出现的频数):
使用格式为:
table(..., exclude = if (useNA =="no") c(NA, NaN), useNA = c("no",
"ifany","always"), dnn = list.names(...), deparse.level = 1)
其中参数exclude表示哪些因子不计算。
示例代码:
> d <- factor(rep(c("A","B","C"),10),levels=c("A","B","C","D","E"))
> d
[1] A B C A B C A B C A B C A B C A BC A B C A B C A B C A B C
Levels: A B C D E
> table(d)
d
A B C D E
10 10 10 0 0
> table(d, exclude="B")
d
A C D E
10 10 0 0
函数lapply与函数sapply:
lapply的使用格式为:
lapply(X, FUN, ...)
lapply的返回值是和一个和X有相同的长度的list对象,这个list对象中的每个元素是将函数FUN应用到X的每一个元素。其中X为List对象(该list的每个元素都是一个向量),其他类型的对象会被R通过函数as.list()自动转换为list类型。
函数sapply是函数lapply的一个特殊情形,对一些参数的值进行了一些限定,其使用格式为:
sapply(X, FUN,..., simplify = TRUE,USE.NAMES = TRUE)
sapply(*, simplify = FALSE, USE.NAMES =FALSE) 和lapply(*)的返回值是相同的。如果参数simplify=TRUE,则函数sapply的返回值不是一个list,而是一个矩阵;若simplify=FALSE,则函数sapply的返回值仍然是一个list。
示例代码:
> x <- list(a = 1:10, beta =exp(-3:3), logic = c(TRUE,FALSE,FALSE,TRUE))
> lapply(x, quantile)
$a
0% 25% 50% 75% 100%
1.00 3.25 5.50 7.7510.00
$beta
0% 25% 50% 75% 100%
0.04978707 0.25160736 1.00000000 5.05366896 20.08553692
$logic
0% 25% 50% 75%100%
0.0 0.0 0.5 1.0 1.0
> sapply(x,quantile,simplify=FALSE,use.names=FALSE)
$a
0% 25% 50% 75% 100%
1.00 3.25 5.50 7.7510.00
$beta
0% 25% 50% 75% 100%
0.04978707 0.25160736 1.00000000 5.05366896 20.08553692
$logic
0% 25% 50% 75%100%
0.0 0.0 0.5 1.0 1.0
#参数simplify=TRUE的情况
> sapply(x, quantile)
a beta logic
0% 1.00 0.04978707 0.0
25% 3.25 0.25160736 0.0
50% 5.50 1.00000000 0.5
75% 7.75 5.05366896 1.0
100% 10.00 20.08553692 1.0
函数mapply:
函数mapply是函数sapply的变形版,mapply 将函数 FUN 依次应用每一个参数的第一个元素、第二个元素、第三个元素上。函数mapply的使用格式如下:
mapply(FUN, ..., MoreArgs = NULL, SIMPLIFY= TRUE,USE.NAMES = TRUE)
其中参数MoreArgs表示函数FUN的参数列表。
示例代码:
> mapply(rep, times=1:4, x=4:1)
[[1]]
[1] 4
[[2]]
[1] 3 3
[[3]]
[1] 2 2 2
[[4]]
[1] 1 1 1 1
#直接使用函数rep的结果:
> rep(1:4,1:4)
[1] 1 2 2 3 3 3 4 4 4 4
fivenum()是将一组数据分为上下两组(通过中位数计算,n=奇时,去掉中位数)然后再计算上下两组的中位数。而summary是通过计算quantle得出的。
Gen.city<-function(N){
n= sample(2:15,N,replace = TRUE)
re = data.frame(1:100)
i=2
for (u in n){
name1<- sample(LETTERS,1)
name2<- sample(c(letters,c(".",1:9)),u)
name3 <- paste(c(name1,name2),collapse=‘‘)
re<-cbind(re,rnorm(100)/u)
names(re)[i]=name3
i = i+1
}
re[,-1]
}
data = Gen.city(70)
X11()
par(las=2,mgp=c(4,.5,0),mar=c(5,5,2,1))
boxplot(data,
horizontal=TRUE,
cex.axis =.5,
cex.lab = 1,
ylab="City",
xlab=‘Value‘,
#col.lab = ‘red‘,
main="ABC result for XYZ")
set.seed(13579)
r=sample(c(-1,1),size=100,replace=TRUE,prob=c(1/2,1/2))
r=c(0,r)
w=cumsum(r)
w=as.ts(w)
plot(w,main="随机游走")
abline(h=0)
> scan(flush=FALSE)
1: 11 22
3: 33
4:
Read 3 items
[1] 11 22 33
> scan(flush=TRUE)
1: 11 22
2: 33
3:
Read 2 items
[1] 11 33
flush=FALSE的时候,是依次计数,即输入几个数,就几次数。
> scan(flush=FALSE)
1: 11 22
3: 33
4:
Read 3 items
[1] 11 22 33
flush=TRUE的时候,是按Enter计数,敲一次Enter记一次数。
> x<-factor(c(1,1,2,2,3,3,4,4,5))
> y<-factor(c(2,2,3,3,4,5,7,8,9))
> table(x);table(y)
x
1 2 3 4 5
2 2 2 2 1
y
2 3 4 5 7 8 9
2 2 1 1 1 1 1
> table(x,y)
y
x 2 3 4 5 7 8 9
1 2 0 0 0 0 0 0
2 0 2 0 0 0 0 0
3 0 0 1 1 0 0 0
4 0 0 0 0 1 1 0
5 0 0 0 0 0 0 1
请问table(x,y)这个表中比如说第一行第一列的2第二行第二列的2表示什么啊?怎么个交叉法,求解答。
是(x=1,y=2)共有两次。
原文地址:http://blog.csdn.net/liu7788414/article/details/44945923