数学函数
函数 | 描述 |
---|---|
abs(x) | 绝对值 |
sqrt(x) | 平方根 |
ceiling(x) | 不小于x的最小整数 |
floor(x) | 不大于x的最大整数 |
trunc(x) | 向0的方向截取的x中的整数部分 |
round(x, digits=n) | 将x舍入为指定为的小数 |
signif(x, digits=n) | 将x舍入为指定位的有效数字位 |
cos(x) sin(x) tan(x) | 余弦、正弦、正切 |
acos(x) asin(x) atan(x) | 反余弦、反正弦、反正切 |
cosh(x) sinh(x) tanh(x) | 双曲余弦、双曲正弦、双曲正切 |
acosh(x) asinh(x) atanh(x) | 反双曲余弦、反双曲正弦、反双曲正切 |
log(x, base=n) log(x) log10(x) | 对x取以n为底的对数,log()为自然对数、log10()为常用对数、 |
exp(x) | 指数函数 |
统计函数
函数 | 描述 |
---|---|
mean(x) | 平均数 |
median(x) | 中位数 |
sd(x) | 标准差 |
var(x) | 方差 |
mad(x) | 绝对中位差 |
quantile(x, probs) | 求分位数 |
range(x) | 求值域 |
sum(x) | 求和 |
diff(x, lag=n) | 滞后差分 |
min(x) | 求最小值 |
max(x) | 求最大值 |
scale(x, center = TRUE, scale = TRUE) | 为数据对象x按列进行中心化或标准化 |
注意: 默认情况下,函数scale()
对矩阵或数据框的指定列进行均值为0、标准差为1的标准化。要对每一列进行任意均值和标准差的标准化,可以使用如下的代码:
newdata <- scale(mydata)*SD +M
其中,M
是想要的均值,SD
为想要的标准差。
要对指定列而不是整个矩阵或数据框进行标准化,可以使用这样的代码:
newdata <- transform(mydata, myvar = scale(myvar)*10 + 50)
此句将变量myvar
标准化为均值50、标准差为10的变量。
概率函数
在R中,概率函数形如:[dpqr] distribution_abbreviation()
其中第一个字母表示其所指分布的某一方面
d = 密度函数
p = 分布函数
q = 分位数函数
r = 生成随机数
常见的概率函数列于下表
分布名称 | 缩写 | 分布名称 | 缩写 |
---|---|---|---|
Beta分布 | beta | Logistic分布 | logis |
二项分布 | binom | 多项分布 | multinon |
柯西分布 | cauchy | 负二项分布 | nbinom |
(非中心)卡方分布 | chisq | 正态分布 | norm |
指数分布 | exp | 泊松分布 | pois |
F分布 | f | Wilcoxon符号秩分布 | signrank |
Gamma分布 | gamma | t分布 | t |
几何分布 | geom | 均匀分布 | unif |
超几何分布 | hyper | Weibull分布 | weibull |
对数正态分布 | lnom | Wilcoxon秩和分布 | wilcox |
举一个正态分布的例子:
-
在区间[-3, 3]上绘制标准正态曲线
代码:
x <- pretty(c(-3,3), 30) y <- dnorm(x) plot(x, y, type = "l", xlab = "Normal Deviate", ylab = "Density", yaxs = "i")
结果:
-
位于
z=1.96
左侧的标准正态曲线下方面积是多少?> pnorm(1.96) [1] 0.9750021
-
均值为500,标准差为100的正态分布的0.9分位点值是多少?
> qnorm(.9, mean=500, sd=100) [1] 628.1552
-
生成50哥均值为50,标准差为10的正态随机数
> rnorm(50, mean=50, sd=10) [1] 49.38745 52.51430 56.93963 51.22944 63.67348 51.36679 54.98808 [8] 53.05569 55.97482 60.39947 45.51604 67.12161 47.07014 52.59261 [15] 42.03015 72.63337 44.46301 57.21510 45.11340 67.84524 49.45923 [22] 53.29985 42.05868 70.21170 39.38098 60.91972 40.28650 53.27463 [29] 52.63329 68.45204 49.54816 48.41146 53.91802 68.76061 51.95143 [36] 59.77664 48.85114 63.89268 58.22510 63.03717 46.58257 51.63818 [43] 33.21591 51.87442 45.71147 43.30351 45.20912 37.52851 48.64193 [50] 64.95938
设定随机种子
可以通过函数set.seed()
显式地指定生成随机数时所用的种子,让结果可以重现。
> set.seed(1234)
> runif(5)
[1] 0.1137034 0.6222994 0.6092747 0.6233794 0.8609154
> set.seed(1234)
> runif(5)
[1] 0.1137034 0.6222994 0.6092747 0.6233794 0.8609154
通过手动设定种子,就可以重现你的结果。这种能力有助于我们创建在未来取用的,以及可以与他人分享的示例。
生成多元正态数据
当你需要获取来自给定均值向量和协方差矩阵的多元正态分布的数据时,MASS包中的mvrnorm()
函数可以让这个问题变得容易。其调用格式:
mvrnorm(n, mean, sigma)
其中n
是你想要的样本大小,mean
是均值向量,而sigma
是方差——协方差矩阵(或相关矩阵)。
字符处理函数
函数 | 描述 |
---|---|
nchar(x) | 计算x的字符数量 |
substr(x, start, stop) | 提取或替换一个字符向量中的子串 |
grep(pattern, x ignore, case=FALSE, fixed=FALSE) | 在x中搜索某种模式 |
sub(pattern, replacement, x, ignore.case=FALSE, fixed=FALSE) | 在x中搜索pattern,并以文本replacement替代 |
strsplit(x, split, fixed=FALSE) | 在split出分割字符向量x中的元素 |
paste(..., sep=" ") | 连接字符串,分隔符为sep |
toupper() | 大写转换 |
tolower() | 小写转换 |
其他实用函数
函数 | 描述 |
---|---|
length(x) | 对象x的长度 |
seq(from, to, by) | 生成一个序列 |
rep(x, n) | 将x重复n次 |
cut(x, n) | 将连续型变量x分割为有着n个水平的因子 |
pretty(x, n) | 创建美观的分割点。绘图中常用 |
cat(..., file="myfile", append=FALSE) | 连接...中的对象,并其输出到屏幕或文件中 |