美文网首页
apply,lapply,sapply,tapply函数的使用

apply,lapply,sapply,tapply函数的使用

作者: maliming | 来源:发表于2022-07-06 15:54 被阅读0次

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博客

相关文章

网友评论

      本文标题:apply,lapply,sapply,tapply函数的使用

      本文链接:https://www.haomeiwen.com/subject/jmjybrtx.html