2013-10-04 25 views
1

我有一个包含3个向量的列表。使用列表中的值

mylist <- list(a = c(1,2), 
       b = c(3,4), 
       c = c(5,6)) 

是否有,例如,执行对三个对象的第一个值的计算与sum()功能没有简单的方法?

我试过很多东西,如:

sum(mylist[c(a, b, c)][1]) 

这行代码是不行的,但它给洞察什么,我试图做的。

感谢您的帮助。

回答

5

使用sapply

> sum(sapply(mylist, "[", 1)) 
[1] 9 

奖金有趣的事实:你可以使用c()[[ ]]内:

sum(sapply(seq(mylist), function(i) mylist[[ c(i, 1) ]])) 
+0

在第二行代码中, R是否会自动假定'i'取值为'1','2'和'3'? – SavedByJESUS

+1

@SavedByJESUS,这些是值,但不是“自动”。 'i'接受'sapply'的第一个参数中的任何值,在本例中为'seq(mylist)',它为列表中的每个元素生成一个整数。 –

+0

我仍然对“sapply”函数中的“[”参数感到惊讶,它在帮助文件中无处可见。感谢你的回答,我现在知道它,并且在列表上工作得更好。 – SavedByJESUS

2

不是很有效的解决方案:

sum(unlist(lapply(mylist,'[',1))) 
[1] 9 
+2

,如果你要使用' unlist',你应该关掉'use.names' –

相关问题