1)apply
apply函数 将数据框或矩阵作为输入, 用于遍历数组中的行或列
apply(x, MARGIN, FUN, ...)
####MARGIN按行计算或按列计算,1表示按行,2表示按列
#####FUN(mean,median.....),也可以使用自定义的函数
a<-as.matrix(1:12,c(3,4))
apply(a,1,function(x) x^2)
b=function(x) {x^2}
apply(a,1,b)
###########一个小测试,添加计算得到的平均值
Student <- c("John Davis", "Angela Williams", "Bullwinkle Moose",
"David Jones", "Janice Markhammer", "Cheryl Cushing",
"Reuven Ytzrhak", "Greg Knox", "Joel England",
"Mary Rayburn")
Math <- c(502, 600, 412, 358, 495, 512, 410, 625, 573, 522)
Science <- c(95, 99, 80, 82, 75, 85, 80, 95, 89, 86)
English <- c(25, 22, 18, 15, 20, 28, 15, 30, 27, 18)
roster <- data.frame(Student, Math, Science, English, stringsAsFactors=FALSE)
z <- roster[,2:4]
score <- apply(z, 1, mean)
for(i in (1:length(score)))
{
roster$mean[i] = score[i]
}
#######apply函数与which的结合
pos=which.max(apply(RNAseq_expr,1,mad))
a[which.max(apply(a,1,mad)),]
2)lapply()函数
lapply()函数可用于对列表对象执行操作,并返回与原始集合长度相同的列表对象。lappy()返回一个长度与输入列表对象相似的列表,其每个元素都是将FUN应用于列表的相应元素的结果。lapply()将列表,向量或数据框作为输入,并在列表中给出输出。
我们可以使用unlist()将列表转换为向量。
3)sapply()函数将列表,向量或数据帧作为输入,并以向量或矩阵形式输出。它对列表对象的操作很有用,并返回与原始集合长度相同的列表对象。sapply()函数执行的功能与lapply()函数相同,但返回一个向量。
你可以使用函数sapply()提取列表中每个成分的第一个元素,放入一个储存名字
的向量Firstname,并提取每个成分的第二个元素,放入一个储存姓氏的向量Lastname。"["
是一个可以提取某个对象的一部分的函数,在这里它是用来提取列表name各成分中的第一
个或第二个元素的。Student <- c("John Davis", "Angela Williams", "Bullwinkle Moose",
"David Jones", "Janice Markhammer", "Cheryl Cushing",
"Reuven Ytzrhak", "Greg Knox", "Joel England",
"Mary Rayburn")
name <- strsplit(Student, " ")
Lastname <- sapply(name, "[", 2) ####sapply函数可提取列表中数据,提取列表的第2个元素
Firstname <- sapply(name, "[", 1) #####,提取列表的第1个元素
4)tapply()函数
tapply()计算向量中每个因子变量的度量(均值,中位数,最小值,最大值等)或函数。这是一项非常有用的功能,可让您创建向量的子集,然后将某些功能应用于每个子集。
参数:
vector:创建向量
factor:创造因子
fun:要应用的函数
data(iris)
tapply(iris$Sepal.Width, iris$Species, median)
更详细的介绍参考
R语言学习记录:apply、lapply、sapply、mapply、tapply函数_fancykoi的博客-CSDN博客