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 |

具体参考https://www.cnblogs.com/terencezhou/p/6235974.html

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)
#连接...的内容,并将其输出到屏幕上或文件中
posted @ 2020-07-06 10:21  ScSexplorer  阅读(433)  评论(0编辑  收藏  举报