补充
求矩阵特征值和特征向量的函数
1 | eigen(x) |
参数
- x:矩阵
将列表转换为向量
1 | unlist(x) |
参数
- x:列表
修改变量名
1 | rename() |
R语言常用函数
字符串处理函数
函数 | 描述 |
---|---|
nchar(x) | 计算x中的字符数量 |
substr(x, start, stop) | 提取或替换一个字符向量中的子串 |
grep(pattern, x, ignore.case = FALSE, perl = FALSE, value = FALSE, fixed = FALSE, useBytes = FALSE, invert = FALSE) | 字符串查询,返回结果为匹配项的下标。 |
sub(pattern, replacement, x, ignore.case = FALSE, fixed=FALSE) | 对第一个满足条件的匹配做替换,原字符串并没有改变,要改变原变量只能通过再赋值的方式。 |
gsub(pattern, replacement, x, ignore.case = FALSE, perl = FALSE, fixed = FALSE, useBytes = FALSE) | 把所有满足条件的匹配都做替换,原字符串并没有改变,要改变原变量只能通过再赋值的方式。 |
strsplit(x, split, fixed = FALSE, perl = FALSE, useBytes = FALSE) | 在split处分割字符向量x中的元素。 |
paste (…, sep = “ “, collapse = NULL) | 连接字符串,分隔符为sep |
查询
1 | grep(pattern, x, ignore.case = FALSE, perl = FALSE, value = FALSE, fixed = FALSE, useBytes = FALSE, invert = FALSE) |
参数解释
(1)pattern: 字符串类型,正则表达式,指定搜索模式,当将fixed参数设置为TRUE时,也可以是一个待搜索的字符串。
(2)x : 字符串向量,用于被搜索的字符串。
(3)ignore.case: 是否忽略大小写。为FALSE时,大小写敏感,为TRUE时,忽略大小写。
(4)perl: 用于指定是否Perl兼容的正则表达式
(5)value:逻辑值,为FALSE时,grep返回搜索结果的位置信息,为TRUE时,返回结果位置的值。
(6)fixed:逻辑值,为TRUE时,按pattern指定的字符串进行原样搜索,且会忽略产生冲突的参数设置。
(7) useBytes:逻辑值,如果为真,则按字节进行匹配,而不是按字符进行匹配。
(8)invert:逻辑值,如果为TRUE,则返回未匹配项的索引或值。
替换
sub()
与gsub()
函数
区别
两者在使用上没有区别,但在结果上sub()
只替换第一个匹配到的内容,而gsub()
为全局替换。
sub()
1 | sub(pattern, replacement, x, ignore.case = FALSE, perl = FALSE, fixed = FALSE, useBytes = FALSE) |
参数详解
pattern
:匹配模式,可以是文本段(fixed = FALSE
)或正则表达式replacement
:用于替换的字符串或字符向量x
:被替换的字符串或字符向量ignore.case
:是否区分大小写perl
:是否使用 perl 正则表达式fixed
:若为TRUE
,pattern
当作字符串而不是正则表达式useBytes
:若为TRUE
进行字节与字节匹配,而不是默认的字符与字符匹配
gsub()
1 | gsub(pattern, replacement, x, ignore.case = FALSE, perl = FALSE, fixed = FALSE, useBytes = FALSE) |
分割
strsplit()
1 | strsplit(x, split, fixed = F, perl = F, useBytes = F) |
参数详解
- x:字符串格式向量,函数依次对向量的每个元素进行拆分,分割结果为一个列表。
- split:为拆分位置的字串向量,即在哪个字串处开始拆分;该参数默认是正则表达式匹配。
- fixed = T:表示是用普通文本匹配或者正则表达式的精确匹配。
- perl:其设置和perl的版本有关,表示可以使用perl语言里面的正则表达式。如果正则表达式过长,则可以考虑使用perl的正则来提高运算速度。
- useBytes:是否逐字节进行匹配,默认为FALSE,表示是按字符匹配而不是按字节进行匹配。
连接
paste()
1 | paste (..., sep = " ", collapse = NULL) |
参数详解
- … : 表示要组合的任何数量的参数,如:
paste(c(1:5),"a","b")
。 - sep : 表示参数之间的分隔符。它是任选的。
- collapse : 用于消除两个字符串之间的空间。但不是在一个字符串的两个词的空间。
数学函数
统计函数
函数 | 描述 |
---|---|
mean(x) | 平均数 |
median(x) | 中位数 |
sd(x) | 标准差 |
var(x) | 方差 |
quantile(x,probs) | 求分位数。其中x为待求分位数的数值型向量,probs为一个由[0,1]之间的概率值组成的数值向量 |
range(x) | 求值域 |
sum(x) | 求和 |
min(x) | 求最小值 |
max(x) | 求最大值 |
概率函数
分布名称 | 缩写 | 分布的参数名称及默认值 |
---|---|---|
Beta分布 | beta | shape1,shape2 |
Logistic分布 | logis | location=0,scale=1 |
二项分布 | binom | size,prob |
多项分布 | multinom | size,prob |
柯西分布 | cauchy | location=0,scale=1 |
负二项分布 | nbinom | size,prob |
(非中心)卡方分布 | chisq | df |
正态分布 | norm | mean=0,sd=1 |
指数分布 | exp | rate=1 |
泊松分布 | pois | lambda |
F分布 | f | df1,df2 |
apply家族
apply()函数
1 | apply(X, MARGIN, FUN) |
参数解释
- x:一个数组或者矩阵
- MARGIN:两种数值(1或2),决定对那个维度进行函数计算
- 1:基于行
- 2:基于列
- c(1,2):同时对行和列
- FUN:函数操作,内置函数有mean、medium、sum等
lapply()函数
1 | lapply(X,FUN) |
参数解释
- X:一个向量或者一个对象
- FUN:函数操作
sapply()函数
sapply一次性对一堆数据执行某个函数
1 | sapply(X, FUN, …, simplify = TRUE, USE.NAMES = TRUE) |
参数解释
- X:填向量或者向量的表达式
- FUN:填某个函数,这个函数会应用于每个X
- … :接收多个函数
- simplify:默认TRUE, TRUE时返回值为向量或矩阵,simpilfy = “array”时返回array或rank。
mapply()函数
支持传入两个以上的列表。
1 | mapply(FUN, …, MoreArgs = NULL, SIMPLIFY = TRUE, USE.NAMES = TRUE) |
参数解释
- FUN:函数操作
- … :可以接收多个数据
- MoreArgs: 参数列表
- SIMPLIFY: 是否数组化,当值array时,输出结果按数组进行分组
- USE.NAMES: 如果X为字符串,TRUE设置字符串为数据名,FALSE不设置。比如,比较3个向量大小,按索引顺序取较大的值。
R语言编程基础
判断语句
if语句类似c语言,不做介绍
R语言简化判断语句
1 | ifelse(condition,statement1,statement2) |
参数说明
- condition:判断条件
- statement1:条件成立时执行
- statement2:条件不成立时执行
switch分支
1 | switch(expression, case1, case2, case3....) |
参数详解
- 如果
expression
的值不是字符串,那么它被强制为整数。 - 在交换机中可以有任意数量的
case
语句。 每个案例后面都跟要比较的值和冒号。可以为list列表,可以用有名定义。如果表达式返回值在1到length(list)之间,则返回列表相应位置的值,否则返回“NULL”值。当list是有名定义,表达式等于变量名时,返回变量名对应的值,否则返回“NULL”值。- 如:
- y <- “fruit”
switch(y, fruit = “apple”, vegetable = “broccoli”, meat = “beef”) - 输出fruit对应的值“apple”
- 如果整数的值在
1
和nargs() - 1
(参数的最大数目)之间,则对case
条件的相应元素求值并返回结果。 - 如果表达式求值为字符串,那么该字符串与元素的名称匹配。
- 如果有多个匹配,则返回第一个匹配元素。
- 无默认参数可用。
- 在没有匹配的情况下,如果有一个未命名的元素…它的值被返回。 (如果有多个这样的参数,则返回错误。)
循环语句
for循环
1 | for (name in expr1) {expr2} |
参数解释
- name是循环变量,在每次循环时从expr1中顺序取值,
- expr1是一个向量表达式(通常是个序列,如1:20),
- expr2通常是一组表达式,当name的值包含在expr1中时,执行expr2的语句,否则循环将终止。
while循环
1 | while(cond){expr} |
参数解释
- cond为条件表达式,while会一直循环至条件不成立
- expr为条件成立时执行的语句
repeat-break循环
repeat是无限循环语句,并且会在达到循环条件后,使用break语句直接跳出循环。
1 | repeat{ |
自定义函数
1 | myfunction <- function(arglist) { |
参数说明
- myfunction:为函数名称
- arglist:为函数中的参数列表
- 大括号{}内的语句为函数体
- 异常处理:输入的数据不能满足函数计算的要求,或者类型不符,这时应设计相应的机制提示哪个地方出现错误。
- 运算过程:包括具体的运算步骤。运算过程和该函数要完成的功能有关。
- 返回值:用return函数给出,返回对象的数据类型是任意的,从标量到列表皆可。函数在内部处理过程中,一旦遇到return,就会终止运行,将return内的数据作为函数处理的结果给出。
- 函数参数是在函数体内部将要处理的值,函数中的对象只在函数内部使用
默认值
在函数定义中设置默认值
1 | function(x="0",y,...){} |
设置x的默认值为0,y为必填,…表示缺省
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小狼的学习笔记!
评论