2016-04-28 20 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]]))