我有一個包含3個向量的列表。使用列表中的值
mylist <- list(a = c(1,2),
b = c(3,4),
c = c(5,6))
是否有,例如,執行對三個對象的第一個值的計算與sum()
功能沒有簡單的方法?
我試過很多東西,如:
sum(mylist[c(a, b, c)][1])
這行代碼是不行的,但它給洞察什麼,我試圖做的。
感謝您的幫助。
我有一個包含3個向量的列表。使用列表中的值
mylist <- list(a = c(1,2),
b = c(3,4),
c = c(5,6))
是否有,例如,執行對三個對象的第一個值的計算與sum()
功能沒有簡單的方法?
我試過很多東西,如:
sum(mylist[c(a, b, c)][1])
這行代碼是不行的,但它給洞察什麼,我試圖做的。
感謝您的幫助。
使用sapply
> sum(sapply(mylist, "[", 1))
[1] 9
獎金有趣的事實:你可以使用c()
的[[ ]]
內:
sum(sapply(seq(mylist), function(i) mylist[[ c(i, 1) ]]))
不是很有效的解決方案:
sum(unlist(lapply(mylist,'[',1)))
[1] 9
,如果你要使用' unlist',你應該關掉'use.names' –
在第二行代碼中, R是否會自動假定'i'取值爲'1','2'和'3'? – SavedByJESUS
@SavedByJESUS,這些是值,但不是「自動」。 'i'接受'sapply'的第一個參數中的任何值,在本例中爲'seq(mylist)',它爲列表中的每個元素生成一個整數。 –
我仍然對「sapply」函數中的「[」參數感到驚訝,它在幫助文件中無處可見。感謝你的回答,我現在知道它,並且在列表上工作得更好。 – SavedByJESUS