2013-10-04 27 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' –

相關問題