假設我有一個函數返回2個矩陣。對於每個輸入i。如何在R中有效地總結列表中的矩陣(無循環)?
f<-function(i){
m1=matrix(i,ncol=5,nrow=5)
m2=matrix(i*10,ncol=5,nrow=5)
r=list(m1=m1,m2=m2)
return(r)
}
d=lapply(1:3,f)
我怎樣才能得到2件事情沒有for循環?
d[[1]]$m1+d[[2]]$m1+d[[3]]$m1
d[[1]]$m2+d[[2]]$m2+d[[3]]$m2
我試圖sum(lapply(1:3,function(x) (d[[x]]$m1)))
爲M1,但不起作用。
但請注意,這些技術上仍然是循環,'Reduce'是一個隱藏(字節編譯)for'循環。這不是我認爲是矢量化的(但我仍然會使用替代1)。 – Roland
@Roland向量化函數也用於循環(在C中) –
當然,在C級別。性能差異在於R函數在每次迭代中是否被調用。 – Roland