R是统计学家整出来的,是一种统计领域的软件工具。面向数组(array-oriented)的语法,它更像数学,方便科学家将数学公式转化为R代码。在使用R时,要尽量用array的方式思考,避免for循环,多用apply族函数代替
vector是一维的array,dataframe可以看作特殊的list。
apply(array, margin, FUN, …)
在array上,沿margin方向,依次调用FUN
。返回值为vector。
1表示按行,2表示按列
经实测,只能用在二维及以上的array上,不能用在vector上(如果要应用于vector,请使用lapply
或sapply
)
lapply的作用跟for循环一样,按for循环理解就对了
lapply(list, FUN, …)
在list
上逐个元素调用FUN
。可以用于dataframe上,因为dataframe是一种特殊形式的list。
而lapply输出是list
sapply(list, FUN, …)
sapply输出是向量
两者相同的地方是输入都为向量or列表,lapply输出list,sapply输出向量
在lapply函数外围在使用unlist函数即可使lapply函数结果为向量格式
unlist(lapply(1:3, function(x) x^2))
[1] 1 4 9
%>% #相当于linux中的管道符
library(dplyr)
tmp1<- group_by(PlantGrowth,group) %>% summarise(count=n(),mean=mean(weight),sd=sd(weight))
tmp1
#run一遍就学会了
df1 = data.frame(CustomerId=c(1:6),Product=c(rep("Toaster",3),rep("Radio",3)))
df2 = data.frame(CustomerId=c(2,4,6,7),State=c(rep("Alabama",3),rep("Ohio",1)))
merge(df1, df2, all=TRUE) #取并集,重复的不加
merge(df1, df2, all=F) #取交集
merge(df1, df2, all.x=F) #以df1所拥有的显示
merge(df1, df2, all.y=T) #以df2所拥有的显示
merge(df1, df2) #默认all=F,取交集
a值是否包含于table中,为真输出TURE,否则输出FALSE
ls.str() #列出变量且带其属性
?NIPTeR #得到帮助文档
class() #函数获取类型,返回字符串
substring(text, first, last = 1000000L)
substring(var ,2 ) #Extract substrings in a character vector.
substring(x, 2, 4:6)
[1] "P11" "P11-" "P11-3"
substring(x, 2, 4)
[1] "P11"
去重复
#类似unix中的uniq
#参考链接:https://www.cnblogs.com/wheng/p/6262737.html
group_name="After-Control.txt"
sub("(.*?)\\.(txt)", "\\1", group_name,perl=TRUE)
#perl=TRUE,使用Perl-compatible regexps
#注意R里面匹配"."的方式比perl多一个反斜杠"\\.";
#"\\" 转义字符,如果要匹配就要写成“\\(\\)”
#其中\\1指第一个括号中匹配的部分
"After-Control"
which(grepl("After|Before",colnames(all_sample_TPM), perl = T)) #"|",表示可选项,即|前后的表达式任选一个
从某一个数据框中选择出符合某条件的数据或是相关的列
> selectresult=subset(df1,name=="aa")
> selectresult
name age sex
1 aa 20 f
> df1
name age sex
1 aa 20 f
2 bb 29 m
3 cc 30 f
is.numeric() 是否数值型数据
is.character() 是否字符型数据
is.vector() 是否向量数据
is.matrix() 是否矩阵数据
is.data.frame() 是否数据框数据
is.factor() 是否因子数据
is.logical() 是否逻辑型数据
以上为判断数据类型的函数,其返回TRUE或FALSE
as.numeric()
as.character() #字符型向量
as.vector()
as.matrix()
as.data.frame()
as.factor()
as.logical()
all(a == b) #检验a和b是否完全一致
R语言apply族函数详解
为什么用apply