R 语言学习笔记(4)—— 数值&字符处理
数值和字符处理函数
1. 数学函数
函数 | 功能 |
---|---|
abs(x) |
绝对值 |
sqrt(x) |
平方根 |
ceiling(x) |
返回不小于 x 的最大整数 |
floor(x) |
返回不大于 x 的最大整数 |
trunc(x) |
向 0 的方向截取整数,左截取 |
round(x, digits = n) |
将 x 舍为指定位数的小数 |
signif(x, digits = n) |
将 x 舍入为指定的有效数字位数 |
log(x, base = n) |
\(\log (x)\) |
需要注意,如果是对一组向量或者是一个数据框作用时,函数会作用于他们中的每一个值
2. 统计函数
函数 | 功能 |
---|---|
mean(x) |
平均数 |
median(x) |
中位数 |
sd(x) |
标准差 |
var(x) |
方差 |
quantile(x, probs) |
求分位数,probs 为一个由[0,1]之间的概率值组成 |
range(x) |
求值域 |
sale(x) |
按列进行中心化(center = TRUE), 或标准化(center = TRUE, scale = TRUE) |
3. 概率函数
概率函数通常用来生成特征已知(有一定统计学特征的)的模拟数据,以及在用户编写的统计函数中计算概率值
形如:[dpqr]distribution_abbreviation()
distribution_abbreviation 概率分布的缩写
常见的概率分布缩写有:正态分布(norm)、t 分布(t)、F 分布(f)、 二项分布(binom)、均匀分布(unif)
eg:pnorm(1.96)
返回的是位于 z=1.96 左侧的标准正态曲线下面积是多少
qnorm(.9, mean = 500, sd = 100)
返回的是均值为 500、标准差为 100的正态分布 0.9分位点值是多少
rnorm(50, mean = 50, sd = 10)
生成 50 个均值为 50,标准差为 10的正态随机数
第一个字母为分布的缩写:
d = 密度函数(density)
p = 分布函数(distribution function)
q = 分位数函数(quantile function)
r = 生成随机数(随机偏差)
1.设定随机数种子
在每次利用 rdistribution_abbreviation() 来生成随机数的时候,函数都会使用一个不同的种子,因此也会产生不同的结果;也就是说,如果使用的种子是相同的话,出现的结果也是相同的,这样我们就能复现结果。可以通过函数 set.seed()
显式(提前)指定这个种子,以后再利用这个种子可以让结果重现(reproducible)
2. 生成多元正态数据
首先得知道什么是多元正态函数。举个例子,一个维度的正态分布在 x-y 轴上表示,是我们常见的分布图形,如果是两个维度即可在 x-y-z 轴上表示,可以想象一下,就像一个沙堆,它在 x-z 的截面恰好是一维的图形轮廓。
我们利用 MASS 包中mvrnorm(n, mean, sigma)
函数来生成多元正态分布中 n 个观测值
mean为均值向量,而sigma为方差-协方差矩阵(或相关矩阵)
| 均值向量 | 230.7 | 146.7 | 3.6 |
| 协方差阵 | 15360.8 | 6721.2 | -47.1 |
| | 6721.2 | 4700.9 | -16.5 |
| | -47.1 | -16.5 | 0.3 |
4. 字符处理函数
举几个比较实用的函数
nchar(x)
#用来计算 x 中字符数量的函数,区分 length(x),其输出的为 x 中元素的个数
substr(x, start, stop)
#用来提取(返回值)或替换(赋值)一个字符向量中的子串
grep(pattern, x, ignore.case = FALSE, fixed = FALSE)
#x中搜索某种模式,fixed = FALSE 则 pattern 为一个正则表达式,反之则为文本字符串,返回值为匹配的下标
sub(pattern, replacement, x, ignore.case = FALSE, fixed = FALSE)
#大致与 grep 一样,但是是搜索出来并将之用 replacement 替换掉
#注意一点,sub("\\s", ".", "Hello There") 返回值为 Hello.There, 其中***"\s"是一个用来查找空白的正则表达式***,而用两个"\"因为一个"\"在 R 中为转义符
strsplit(x, split, fixed = FALSE)
#split 处分割字符向量 x 中的元素。
# y <- strsplit("abc", " ")将返回含有一个成分、三个元素的列表,包含的内容为"a","b","c",
#unlist(y)[2]和 sapply(y, "[", 2)均会返回"b"
paste(..., sep=" ")
#连接字符串,分隔符为 sep
touuper()
tolower()
#转换大小写
正则表达式可以在,
grep()
sub()
strsplit()
中进行搜索
具体语法参考https://www.runoob.com/regexp/regexp-intro.html
5. 其他实用函数
length(x)
#返回对象 x 的长度
seq(from, to, by)
#生成一个序列
#indices <- seq(1, 10, 2)
#indices 的值为 c(1,3,5,7,9)
rep(x, n)
#将 x 重复 n 次
cut(x, n)
#将连续型变量 x 分割为有着 n 个水平的因子
pretty(x, n)
#创建美观的分割点,通过选取 n+1个等间距的取整值,将一个连续型变量分割为 n 个区间,绘图中常用
cat(..., file = "myfile", append = FALSE)
#连接...的内容,并将其输出到屏幕上或文件中