运算符是一个符号,通知编译器执行特定的数学或逻辑操作。 R语言具有丰富的内置运算符,并提供以下类型的运算符。
运算符的类型
R语言中拥有如下几种运算符类型:
算术运算符
关系运算符
逻辑运算符
赋值运算符
其他运算符
算术运算符
下表显示了R语言支持的算术运算符。 操作符对向量的每个元素起作用。
运算符 描述 例
关系运算符
下表显示了R语言支持的关系运算符。 将第一向量的每个元素与第二向量的相应元素进行比较。 比较的结果是布尔值。
运算符 描述 例
逻辑运算符
下表显示了R语言支持的逻辑运算符。 它只适用于逻辑,数字或复杂类型的向量。 所有大于1的数字被认为是逻辑值TRUE。
将第一向量的每个元素与第二向量的相应元素进行比较。 比较的结果是布尔值。
运算符 描述 例
& 它被称为元素逻辑AND运算符。 它将第一向量的每个元素与第二向量的相应元素组合,并且如果两个元素都为TRUE,则给出输出TRUE。
v <- c(3,1,TRUE,2+3i)
t <- c(4,1,FALSE,2+3i)
print(v&t)
它产生以下结果 -
TRUE TRUE FALSE TRUE
| 它被称为元素逻辑或运算符。 它将第一向量的每个元素与第二向量的相应元素组合,并且如果元素为真,则给出输出TRUE。
v <- c(3,0,TRUE,2+2i)
t <- c(4,0,FALSE,2+3i)
print(v|t)
它产生以下结果 -
TRUE FALSE TRUE TRUE
! 它被称为逻辑非运算符。 取得向量的每个元素,并给出相反的逻辑值。
v <- c(3,0,TRUE,2+2i)
print(!v)
它产生以下结果 -
FALSE TRUE FALSE FALSE
逻辑运算符&&和|| 只考虑向量的第一个元素,给出单个元素的向量作为输出。
运算符 描述 例
&& 称为逻辑AND运算符。 取两个向量的第一个元素,并且只有两个都为TRUE时才给出TRUE。
v <- c(3,0,TRUE,2+2i)
t <- c(1,3,TRUE,2+3i)
print(v&&t)
它产生以下结果 -
TRUE
|| 称为逻辑OR运算符。 取两个向量的第一个元素,如果其中一个为TRUE,则给出TRUE。
v <- c(0,0,TRUE,2+2i)
t <- c(0,3,TRUE,2+3i)
print(v||t)
它产生以下结果 -
FALSE
赋值运算符
这些运算符用于向向量赋值。
运算符 描述 例
<−
or
=
or
<<−
称为左分配
v1 <- c(3,1,TRUE,2+3i)
v2 <<- c(3,1,TRUE,2+3i)
v3 = c(3,1,TRUE,2+3i)
print(v1)
print(v2)
print(v3)
它产生以下结果 -
3+0i 1+0i 1+0i 2+3i
3+0i 1+0i 1+0i 2+3i
3+0i 1+0i 1+0i 2+3i
->
or
->>
称为右分配
c(3,1,TRUE,2+3i) ->v1
c(3,1,TRUE,2+3i) ->>v2
print(v1)
print(v2)
它产生以下结果 -
3+0i 1+0i 1+0i 2+3i
3+0i 1+0i 1+0i 2+3i
其他运算符
这些运算符用于特定目的,而不是一般的数学或逻辑计算。
运算符 描述 例
: 冒号运算符。 它为向量按顺序创建一系列数字。
v <- 2:8
print(v)
它产生以下结果 -
2 3 4 5 6 7 8
%in%此运算符用于标识元素是否属于向量。
v1 <- 8
v2 <- 12
t <- 1:10
print(v1 %in% t)
print(v2 %in% t)
它产生以下结果 -
TRUE
FALSE
% % 此运算符用于将矩阵与其转置相乘。
M = matrix( c(2,6,5,1,10,4), nrow = 2,ncol = 3,byrow = TRUE)
t = M % % t(M)
print(t)
它产生以下结果 -
[,1] [,2]
[1,] 65 82
[2,] 82 117
R语言三个矩阵求和计算方法:创建一个用户定义的函数,如果输入x和n,该函数计算从1到n中所有x的倍数之和,sum函数求和,向量求和得到一个数,矩阵求和得到一个向量,把每行求和以后,再进行列求和就是最后的求和。
按行求和,即每一行元素的加和,用rowSums() 注意S大写,后有s。关于元素判断和类型转换,因为numeric(数字)类型在实际操作中使用频率较高,以该类型进行总结。一般用as.numeric(), 可以将非numeric的数据转换为numeric,便于计算。
所有R的函数
和数据集是保存在程序包里面的。只有当一个包被载入时,它的内容才可以被访问。一些常用、基本的程序包已经被收入了标准安装文件中,随着新的统计分析方法的出现,标准安装文件中所包含的程序包也随着版本的更新而不断变化。
在另外版安装文件中,已经包含的程序包有:base—R的基础模块、mle—极大似然估计模块、ts—时间序列分析模块、mva—多元统计分析模块、survival—生存分析模块等等。
操作之前安装好ggplot2、vegan、ggpubr包。如下:
install.packages("ggplot2")
install.packages("ggpubr")
install.packages("vegan")
计算Shannon-香农指数和Simpson-辛普森指数的命令在vegan包中,计算各组显著性的命令在ggpubr包中;画图使用ggplot命令,在行使每个命令之前一定要加载相应的包,如下:
library(ggplot2)
library(ggpubr)
library(vegan)
拿到一个otu表格,要先计算香农指数和辛普森指数,操作如下:
otu=read.table('D:/r-working/feature-table.taxonomy.txt',row.names = 1,skip=1,header=T,comment.char ='',sep='\t')
#读取out表格
#'D:/feature table.taxonomy.txt'为文件路径,注意斜线方向
#row.names = 1指定第一列为行名
#skip=1跳过第一行不读
#header=T指定第一个有效行为列名
#sep='\t'表示指定制表符为分隔符
#comment.char=''表示设置注释符号为空字符‘’,这样#后面的内容就不会被省略
otu=otu[,-ncol(otu)]
#去除表格的最后一列,无用信息
otu=t(otu)
#表格转置,必须将样品名作为行名
shannon=diversity(otu,"shannon")
#计算香农指数,先加载vegan包
shannon
#查看香农指数
simpson=diversity(otu,"simpson")
#计算辛普森指数,先加载vegan包
simpson
#查看辛普森指数
alpha=data.frame(shannon,simpson,check.names=T)
#合并两个指数
write.table(alpha,"D:/r-working/alpha-summary.xls",sep='\t',quote=F)
#存储数据,注意路径使用反斜杠
将各样本进行分组,并进行画图,操作如下:
map<-read.table('D:/r-working/mapping_file.txt',row.names = 1,header=T,comment.char ='',sep='\t',check.names=F)
#读取分组表格
group<-map["Group1"]
#提取需要的分组,'Group1'是表中的分组列名,包括A,B,C三组
alpha<-alpha[match(rownames(group),rownames(alpha)),]
#重排alpha的行的顺序,使其与group的样本id(行名)一致
data<-data.frame(group,alpha,check.rows=T)
#合并两个表格.'<-'与'='同属赋值的含义.
p=ggplot(data=data,aes(x=Group1,y=shannon))+geom_boxplot(fill=rainbow(7)[2])
#data = data指定数据表格
#x=Group1指定作为x轴的数据列名
#y=shannon指定作为y轴的数据列名
#geom_boxplot()表示画箱线图
#fill=rainbow(7)[2]指定填充色
此处用到ggplot2包画箱线图,将画图函数赋值给p后,可以用‘+’不断进行图层叠加,给图片p增加新的特性
p
#查看p
mycompare=list(c('A','B'),c('A','C'),c('B','C'))
#指定多重比较的分组对
mycompare
p<-p+stat_compare_means(comparisons=mycompare,label = "p.signif",method = 'wilcox')
#添加显著性标记的第一种方法,在此之前先加载ggpubr包
p<-p+ylim(2,5.5)
#调整图像的外观