最简单但计算量最大的是泰勒公式:e=1+1/1!+1/2!+1/3!+1/4!+...
下面是求e的R语言函数:
e_fun <- function(n) {etemp <- 1
ni <- 1L
for (i in 1:n) {
etemp <- etemp + 1 / ni
ni <- ni * (i + 1)
}
return(etemp)
}
不过你题目中要求的是求到精度为0.00001就停止,所以可以采用repeat循环:
i <- 1Lni <- 1L
etemp <- 1
repeat {
etemp1 <- etemp
etemp <- etemp + 1 / ni
ni <- ni * (i + 1)
i <- i + 1
if (etemp - etemp1 < 0.00001) break
}
i
etemp
在最后可以看到,求到i=10时,精度就已经达到要求了。
用的最多的,是求均值的mean()函数,当然这里也要提到,像sum()这种求和函数,
还有sd(x) 标准差函数,var(x) 方差函数。min()求最小值,max()求最大值。
我们来具体试试,这里使用一个向量:
test<-c(2,4,5,23,199,25,78,90,12)
求最大值
>max(test)
[1] 19
求最小值
>min(test)
求和
>sum(test)
[1] 43
求标准差,求方差
>sd(test)
[1] 65.01154
>var(test)
[1] 4226.
在来试试最重要的均值
>mean(test)
[1] 48.66667
另外中位数计算。使用median()函数
>median(test)
[1] 23
如果给定一种概率分布,通常会有四类计算问题:
计算其概率密度density (d)计算其概率分布probability(p)计算其百分位数quantile (q)随机数模拟random (r)上面四类计算对应的英文首字母,就是R语言类率分布函数的开头字母。
比如说,正态分布是norm的化,那密度函数就是dnorm(),分布函数就是pnorm(),
更有用的是用相应分布生成随机数,比如rnorm(),就会生成服从正态分布的随机数。
比如我们生成100个服从正态分布的随机数
rnorm(100)
[1] -9.064408e-01 1.026560e+00 -1.097470e+00 1.055395e+00 9.377175e-01
[6] -2.080103e-01 -3.092396e-01 -8.739942e-01 -1.242774e+00 1.102486e+00
[11] 1.082092e+00 -1.695528e+00 -5.930809e-01 -2.100800e-01 8.253859e-01
[16] -1.112551e+00 -3.960474e-01 -9.354820e-01 7.291608e-01 -3.773510e-01
[21] -3.438082e-01 -7.378688e-02 -9.047609e-01 -1.036344e+00 9.485103e-01
[26] -3.437985e-01 -2.145275e-02 1.350098e+00 -1.283633e+00 3.767240e-01
[31] 1.169566e+00 -4.325399e-01 -9.215626e-02 3.839357e-01 3.045491e-01
......
我们再用相应的频率分布直方图来看一下,这些生成的随机数:
hist(rnorm(100))
R就画出了这些随机数的频率分布图
R语言常用数学函数sum()、max()、min()、mean()、median()
prod(x) 对x中的元素都连乘
which.max(x) 返回x中最大元素的下标
which.min(x) 返回x中最小元素的下标
range(x) 值域
rev(x) 对x中的元素取逆序
sort(x) 将x中的元素将升序排列
pmin(x,y) 返回一个向量,它的第i个元素是x[i],y[i] 中最小值
pmax(x,y) 返回一个向量,它的第i个元素是x[i],y[i] 中最大值
cumsum(x) 求累积和,返回一个向量,第i个元素等于x[1]到x[i]的和
cumprod(x) 求累积(从左到右)乘积
cummin(x) 求累积最小值(从左到右)
cummax(x) 求累积最大值(从左到右)
match(x,y) 返回一个和x的长度相同的向量,第i个元素表示y中与x[i]相同的元素的位置(没有则返回NA)
na.omit(x) 函数忽略有缺失值(NA)的观察数据(如果x是矩阵或数据框则忽略相应的行)
na.fail(x) 如果x包含至少一个NA则返回一个错误消息
which() 返回符合条件的元素的下标
choose 组合数,二项式,例choose(4,2) 返回6
rep(x,y) 将x重复y次
unique(x) 去掉重复的元素,只取一个
table(x) 返回一个列表,给出y中重复元素的个数列表
subset(x,条件) 返回x中满足特定条件的子集