2016-04-28 47 views
1

我有一個類似於這個question中提出的問題的問題,但我不想在列表中獲取元素方法,而是對列表中元素內的每個索引值感興趣。R表中列出索引元素的意思

給我有這三個名單

ice_2000 = list(seq(1,5,1),seq(6,10,1),seq(11,15,1)) 
ice_1990 = list(seq(1,5,1),seq(6,10,1),seq(11,15,1)) 
ice_1980 = list(seq(1,5,1),seq(6,10,1),seq(11,15,1)) 

我想找到跨越每站日年平均海冰...

x=c(1,2,3) ## years 
y=c(1:5) ## stations 

...並將其存儲在一個新的與相同格式的任何三個列表的上面所列內容

喜歡的東西

[[day]][station]....[n station] 
. 
. 
. 
[[n day]][station]....[n station] 

我已經試過類似

average.ice =rep(list(rep(NA, length(y))), 3) 

foreach(x=x) %do% { 
    foreach(y=y) %do% { 

    average.ice[[x]][y] = mean(c(ice_1980[[x]][y],ice_1990[[x]][y],ice_2000[[x]][y])) 

    } 
} 

但我在輸出

average.ice 

[[1]] 
[1] 1 2 3 

[[2]] 
[1] NA NA 8 

[[3]] 
[1] NA NA 13 

得到的NA我要去哪裏錯了?在申請家庭中有沒有更聰明的辦法?

回答

1

要小心索引。那是你要的嗎?

yy=c(1,2,3) ## years 
st=c(1:5) ## stations 

average.ice =rep(list(rep(NA, length(st))), 3) 

library(foreach) 

foreach(x=yy) %do% { 
    foreach(y=st) %do% { 

    average.ice[[x]][y] = mean(c(ice_1980[[x]][y],ice_1990[[x]][y],ice_2000[[x]][y])) 

    } 
} 
0

您可能正在尋找這樣的事情:

numOfStations <- length(ice_1980) 

average.ice <- lapply(1:numOfStations, 
         function(i) mapply(mean, ice_1980[[i]], ice_1990[[i]], ice_2000[[i]]))