如何使用sapply / lapply获取变量的观察值总和以获取数据帧列表?

时间:2016-10-20 13:55:13

标签: r list lapply sapply

我想获得列表中每个数据框中变量的值的总和。我有类似的东西:

l <- list(a = mtcars, b = mtcars, c = mtcars)  
v <- sapply(l, function(x)sum(l$x$disp))

我希望得到一个包含总和的命名向量。相反,我只得到零。我的猜测是只将数据帧的名称传递给函数。

我尝试了其他函数和lapply,但每次我得到一个带有Null或零的列表/向量。可以为此任务使用for语句,但在我的情况下,我有包含数据框列表的列表,R中的嵌套循环似乎不是一个好的选择。 你有什么想法我错过了吗? 提前谢谢。

1 个答案:

答案 0 :(得分:2)

我认为你需要,

sapply(l, function(x) sum(x["disp"]))

#  a      b      c 
#7383.1 7383.1 7383.1 

或者,如果您需要在所有列表中填写disp变量的完整总和,则可以将其完全包装在sum

sum(sapply(l, function(x) sum(x["disp"])))

#[1] 22149.3