R语言笔记1——函数的使用
文章目录
- R语言笔记1——函数的使用
- dnorm
- dpois
- optim
- rnorm
- sample
- integrate
- sort
- findInterval
- sapply
- apply
dnorm
dnorm() 是R语言中正态分布的概率密度函数,d代表density,norm代表正态分布,返回给定x在标准正态分布下的概率密度。
对于一个给定的正态分布,X ∼ N(μ,σ2),μ代表均值,σ2代表方差,dnorm()可以计算给定x下的概率密度,即P(X<=x|μ=a,σ=b),比如,对于标准正态分布 X ∼ N(0,1),要计算x=1时的概率密度,即dnorm(1)=P(X<=1|μ=0,σ=1)
> dnorm(1) # 默认为标准正态分布,故亦可以写作下面这种形式[1] 0.2419707> dnorm(1,mean=0,sd=1)[1] 0.2419707
> dnorm(1,mean=0,sd=1)
[1] 0.2419707
dpois
dpois() R语言中的函数用于计算一组整数值的泊松密度。它还创建泊松分布的密度图。
用法: dpois(vec, lambda)
参数:
**vec:**整数值序列
**lambda:**每个时间间隔的平均事件数
范例1:
# R program to compute
# Poisson Density
# Sequence of x-values
x <- seq(-10, 10, by = 1)
# Calling dpois() Function
y <- dpois(x, lambda = 5)
y
optim
optim() 函数:基于Nelder-Mead、准牛顿和共轭梯度算法的通用优化(求最小值)。它包括一个用于盒约束优化和模拟退火的选项。
R语言optim
rnorm
rnorm 函数:rnorm (n, mean = 0, sd = 1),n 为产生随机值个数(长度),mean 是平均数, sd 是标准差
使用该函数的时候后,一般要赋予它 3个值.
rnorm() 函数会随机正态分布,然后随机抽样 或者取值 n 次,
rnorm(5,0,1) 以N(0,1)的正态分布,分别列出5个值。
r 这列代表随机,可以替换成dnorm, pnorm, qnorm 作不同计算:
r = random = 随机, d= density = 密度, p= probability = 概率 , q =quantile = 分位
sample
随机抽样又分为重复随机抽样和不重复随机抽样两种。重复抽样是指:本次从整体中抽取出的数据样本,在下一次抽取时同样有机会被抽取。不重复抽样就是:一旦被抽取为样本,下次就不能再被抽取了。
sample() 函数可以完成随机抽样处理,其基本形式为:
sample(x, size, replace = FALSE)
具体参数说明:
x 整体数据,以向量形式给出
size 抽取样本的数目
replace 如果为F(默认),则是不重复抽样,此时size不能大于x的长度;
如果为T,则是重复抽样,此时size允许大于x的长度
prob 抽样向量中元素被抽到的可能性
相应的示例代码如下:
sample(c(1:20),size=10) #在1~20数据中不重复地随机抽取10个元素作为样本
[1] 13 7 4 5 2 19 14 6 10 3
sample(c(1:20),size=30,replace=T) #重复地随机抽取30个元素作为样本
[1] 7 11 2 11 7 3 1 13 12 4 19 11 16 4 18 13 13 5 17 11 3 15 17 5 1
[26] 15 5 12 10 10
integrate
**integrate() **函数在有限或无限区间上一元函数的自适应求积
integrate(f, lower, upper, …, subdivisions = 100L,
rel.tol = .Machine$double.eps^0.25, abs.tol = rel.tol,
stop.on.error = TRUE, keep.xy = FALSE, aux = NULL)
integrate(function(x) x*exp(-(y-x)^2/2-lambda*abs(x)),
lower = -Inf,
upper = Inf)$value
sort
sort() 函数对向量按照从小到大排序,默认返回向量从小到大的值
test <- c(7,1,9,3,8)
> test
[1] 7 1 9 3 8
> a <- sort(test) ## 默认升序
> class(a) ## 返回值为数值
[1] "numeric"
> a
[1] 1 3 7 8 9
> sort(test,decreasing = T) ## 降序排列
[1] 9 8 7 3 1
findInterval
findInterval() 函数-做cut处理
findInterval (x, vec),x 为数据向量,vec为一个单调递增的向量来产生区间,产生的区间默认为左闭右开
x <- 2:18
v <- c(5, 10, 15)
findInterval(x, v)
[1] 0 0 0 1 1 1 1 1 2 2 2 2 2 3 3 3 3
cbind(x, findInterval(x, v))
x
[1,] 2 0
[2,] 3 0
[3,] 4 0
[4,] 5 1
[5,] 6 1
[6,] 7 1
[7,] 8 1
[8,] 9 1
[9,] 10 2
[10,] 11 2
[11,] 12 2
[12,] 13 2
[13,] 14 2
[14,] 15 3
[15,] 16 3
[16,] 17 3
[17,] 18 3
sapply
sapply() 函数的作用是:将列表、向量或数据帧作为输入,并以向量或矩阵的形式给出输出。
**sapply()函数和lapply()**函数做同样的工作,但是返回一个列表。
sapply(X, FUN)
| 参数 | 描述 |
| X | 向量或对象 |
| FUN | 作用于x中每个元素的函数 |
我们可以从cars数据集中测量汽车的最小速度和停止距离:
dt <- cars
lmn_cars <- lapply(dt, min)
smn_cars <- sapply(dt, min)
lmn_cars
# 结果
$speed
[1] 4
$dist
[1] 2
smn_cars
# 结果
speed dist
4 2
apply
apply() 以数据帧或矩阵作为输入,并以向量、列表或数组的形式给出输出。apply()函数主要用于避免显式使用循环结构。它是所有集合中最基本的,可以在母体上使用。