补充

求矩阵特征值和特征向量的函数

矩阵特征值和特征向量介绍

1
eigen(x)

参数

  • x:矩阵

将列表转换为向量

1
unlist(x)

参数

  • x:列表

修改变量名

1
2
3
4
rename()
names()
colnames()
rownames()

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:若为 TRUEpattern 当作字符串而不是正则表达式
  • 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
2
3
4
5
6
7
repeat{
expr1
if(cond){
break
}
expr2
}

自定义函数

1
2
3
4
myfunction <- function(arglist) {
statements
return(object)
}

参数说明

  • myfunction:为函数名称
  • arglist:为函数中的参数列表
  • 大括号{}内的语句为函数体
    • 异常处理:输入的数据不能满足函数计算的要求,或者类型不符,这时应设计相应的机制提示哪个地方出现错误。
    • 运算过程:包括具体的运算步骤。运算过程和该函数要完成的功能有关。
    • 返回值:用return函数给出,返回对象的数据类型是任意的,从标量到列表皆可。函数在内部处理过程中,一旦遇到return,就会终止运行,将return内的数据作为函数处理的结果给出。
  • 函数参数是在函数体内部将要处理的值,函数中的对象只在函数内部使用

默认值

在函数定义中设置默认值

1
function(x="0",y,...){}

设置x的默认值为0,y为必填,…表示缺省