首页 > 解决方案 > 在数据框列表中使用 lapply 和匿名函数

问题描述

在数据帧列表中listdf,我想确定每个数据帧中浓度列的平均值、最大值、最小值、标准差和行数(值的数量):

mean <- lapply(listdf, function(x) {mean(x$Concentration, na.rm = F)})
max <- lapply(listdf, function(x) {max(x$Concentration, na.rm = F)})
min <- lapply(listdf, function(x) {min(x$Concentration, na.rm = F)})
sd <- lapply(listdf, function(x) {sd(x$Concentration, na.rm = F)})
nbr <- lapply(listdf, function(x) {nrow(x$Concentration, na.rm = F)})

但是,nrow不使用lapply和功能。我该如何修改它?

此外,是否可以添加(通过lapply和一个函数或tibble?)额外的第六个分析列表,listdf以告知被拒绝的数据帧的数量listdf是“NA”?我知道这一点是因为我在listdf所有数据框中都选择了没有拒绝值,但我希望在脚本中添加此步骤以进行进一步分析。

nbr_rejected <- lapply(listdf, ??? "NA") 

(nbr_rejected="NA")

标签: rlapply

解决方案


您可以使用length

a <- list(mtcars, mtcars)
lapply(a, function(x) {length(x$hp[!is.na(x$hp)])})

编辑 你的第二个问题:

a <- list(mtcars, mtcars)
lapply(a, function(x) {data.frame(value = matrix(NA, nrow(x), 1))})

推荐阅读