1
integrate(dnorm,?1.96,1.96)integrate(dnorm,?Inf,Inf)
##a
slowly?convergent
integral
3
integrand
5
integrate(integrand,lower=0,upper=Inf)66.如何得到一个列向量?
矩阵转置可以使用函数t(),R中默认x为“integer”类型数据,这时可以用t(t(x))得到列向量:
1
x1:10t(x)
;
t(t(x));
;class(x)
class(t(x))class(t(t(x)))
3
行向量、列向量常常会有一个比较容易让人迷糊的地方:
1
x%?%x
计算的是xTx(计算xxT使用%o%或outer()函数)。crossprod()函数能避免这种情况:
1
XT.y
它直接计算XTY,可以看作前者的另一种表达方式,当然crossprod()更为有效8。由于outer()函数的矩阵意义,它常用于三维绘图数据,比如我们计算
??
sinx2+y210×??x2+y2那么对应的R函数计算为:
1
f
参考complex()函数的帮助。
x1+1i
2
#x
complex(1,1)
Mod(x);Conj(x)
68.如何生成对角矩阵?
对一个向量使用diag()函数,得到对角线元素为向量的对角矩阵;对整数Z使用此函数得到Z维的单位矩阵。
69.求矩阵的特征值和特征向量的函数是什么?
参考:eigen函数
8当矩阵很大时,会非常明显
??
15
70.如何构造上(下)三角矩阵?
参考函数lower.tri()和upper.tri()。
Rmat
2
Rmat[lower.tri(Rmat)]0Rmat
71.求立方根如何运算?
x?(1/3)。在R里面sqrt()函数可以计算开平方,故新手容易推测开立方也有函数。事实上R里面
使用?来作幂函数运算。?不但是运算符号,还可以看作是函数:
1
\(x,1/3)
在R中的运算符号包括:
R中的运算符号
数学运算
逻辑运算
+,-,*,/,?,%%,%/%>,<,>=,<=,==,!=加、减、乘、除、乘方、余数、整除大于,小于,大于等于,小于等于,等于,不等于
72.如何求矩阵各行(列)的均值?
如果运算量不是很大,当然可以使用apply()函数。rowMeans()和colMeans()函数可以更快地得到
你要的结果。
1
m1000;n3000
A
3
system.time(B1
73.如何计算组合数或得到所有组合?
????
choose()用于计算组合数n函数combn()可以得到所有元素的组合。使用factorial()计算阶乘。k,74.如何在R里面求(偏)导数?
使用函数D()
f1
2
f2
75.如何求一元方程的根?
使用uniroot()函数,不过uniroot是基于二分法来计算方程根,当初始区间不能满足要求时,会返回错误信息。
1
f
16
如果一元方程的根恰恰是其极值,那么还可以使用optimize()函数来求极值。
f
2
optimize(f,c(?2,2))76.如何模拟高斯(正态)分布数据?
使用rnorm(n,mean,sd)来产生n个来自于均值为mean,标准差为sd的高斯(正态)分布的数
‘’表示累积分布函数,‘’表示分位据。在R里面通过分布前增加字母‘’表示概率密度函数,
数函数,‘’表示产生该分布的随机数。这些分布具体可以参考第20页中“如何做密度曲线”,或
或R-intro中的Probabilitydistributions章节,
r
dpq
help.search(\)
使用这些函数可以很轻松的进行相关的分布的概
率计算,如已知X?N(3,1),计算
P(2??X??5)
利用正态分布的累积分布函数pnorm
1
Densitypnorm(5,3,1)?pnorm(2,3,1)
0.20.30.4计算结果为0.8185946,即右图中阴影的面积。
P(2 §F字符操作 77.R对大小写敏感么? R中有很多基于Unix的包,故R对大小写是敏感的。可以使用tolower()、toupper()、casefold() 这类的函数对字符进行转化。 1 x\cAsE123\chartr(\,\,x)chartr(\,\,x)tolower(x)toupper(x) 78.R运行结果输出到文件中时,文件名中可以用变量代替吗? 3 5 可以,通过使用paste()函数。 17 1 for(varinletters[1:6]){x write.table(x,paste(\\,var,\,sep=\))} #You will get ”FOO a.txt” ... 3 79.在R中如何使用正则表达式(RegularExpressions) 在R中,有三种类型的正则表达式:extendedregularexpressions,使用函数grep(extended=TRUE)(默认);basicregularexpressions,使用grep(extended=FALSE);Perl-likeregularexpressions,使用grep(perl=TRUE)。比如“.”用来匹配任意字符(使用“\\.”来匹配“.”): grep(\,month.abb) 详细可以参考help(”regex”)。 80.如何在字符串中选取特定位置的字符? 参考substr()函数。 1 substr(\,2,4) substring(\,1:6,1:6) 这个函数同时支持中文,用她来处理“简称”和“全称”还是一个不错的选择的。 81.如何返回字符个数? 参考nchar。 nchar(month.name[9]) §G日期时间 82.日期可以做算术运算么? 可以。一般我们需要使用as.Date(),as.POSIXct()函数将读取的日期(字符串)转化为“Date”类型数据,“Date”类型数据可以进行算术运算。 1 d1 D1 3 D2 ; D1?D2 difftime(D1,D2,units=\) 83.如何将日期表示为“星期日,22七月2007”这种格式? 5 使用format()函数。 18 1 format((Sys.Date(),format=\%d%B%Y\) 具体format参数可以参考help(strptime)的details部分。 §H绘图相关 84.如何在同一画面画出多张图? 这里提供三种解决方案: ?修改绘图参数,如par(mfrow=c(2,2))或par(mfcol=c(2,2));?更为强大功能的layout函数,它可以设置图形绘制顺序和图形大小;?split.screen()函数。 推荐使用layout()函数,StatisticswithR的一个例子: 1 layout(matrix(c(1,1,1, 2,3,4, 2,3,4),nr=3,byrow=T)) hist(rnorm(25),col=\)hist(rnorm(25),col=\)hist(rnorm(25),col=\)hist(rnorm(25),col=\)85.如何设置图形边缘大小 3 5 7 修改绘图参数par(mar=c(bottom,left,top,right)),bottom,left,top,right四个参数分别是距离bottom,left,top,right的长度,默认距离是c(5,4,4,2)+0.1。或者修改绘图参数par(mai=c(bottom,left,top,right)),以英寸为单位来指定边缘大小。 86.常用的pch符号都有哪些? pch是plottingcharacter的缩写。pch符号 1 3 5 7 9 1113151719212325 可以使用“0:25”来表示26个标识(参看右图“pch符号”)。当然符号也可以使用#,%,?,|,+,?,.,o,O。值得注意的是,21:25这几个符号可以在points函数使用不同的颜色填充(bg=参数)。 1 024681012141618202224 op plot(x,sin(x),type=\,bg=par(\))points(x,sin(x),pch=21,cex=1.5,bg=\) 19 3