【问题标题】:Using lapply and an anonymous function in a list of data frames在数据框列表中使用 lapply 和匿名函数
【发布时间】:2020-06-23 15:48:22
【问题描述】:

在数据帧列表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")

【问题讨论】:

  • 尝试sum(!is.na(x$Concentration)) 而不是nrow(x$Concentration, na.rm = F)
  • 我不太明白第二个问题是什么。你能详细说明一下吗?
  • 感谢您的帮助。我试图详细说明第二个问题。从我的数据框列表listdf 中,我现在有 5 个列表,给出了每个 DF 的浓度列的平均值、最大值、最小值……。现在我希望有第六个列表,告诉每个 DF 中被拒绝的值的数量是“NA”。这不是特定值的计算 per se ,只是一个列表,每次字符“NA”时都有一个列表(nrow=listdf 中的 DF 数)
  • 这是每个数据帧中 NA 的数量吗?
  • 不,想象一下,我想添加另一个列表(1 列,nrow=length of listdf),每次为每一行写上字符“天空是蓝色的”

标签: r lapply


【解决方案1】:

你可以使用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))})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-01
    • 2017-08-14
    • 2022-01-14
    • 2016-02-07
    • 1970-01-01
    • 2018-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多