2016-10-20 14 views
1

Я хочу получить сумму значений для переменной в каждом кадре данных в списке. У меня есть что-то похожее на это:Как получить сумму наблюдений переменной с использованием sapply/lapply для списка кадров данных?

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

Я ожидаю получить именованный вектор, содержащий суммы. Вместо этого я получаю только нули. Я предполагаю, что только имя фрейма данных передается функции.

Я пробовал другие функции и лапы, но каждый раз, когда я получаю список/вектор с нулями или нулями. Его можно использовать для инструкции для этой задачи, но в моем случае у меня есть список, содержащий списки кадров данных, а вложенные петли в R, по-видимому, не являются хорошим выбором. У вас есть идеи, что мне не хватает? Спасибо заранее.

+0

вы вызываете «список» а не «l». –

ответ

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