R中列表中索引元素的平均值
mean of indexed elements across lists in R
我有一个与此 question 中提出的问题类似的问题,但是我对获取列表中的元素均值不感兴趣,而是对跨列表的元素中的每个索引值感兴趣。
给我这三个列表
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]))
}
}
但是我在输出中得到了 NA
average.ice
[[1]]
[1] 1 2 3
[[2]]
[1] NA NA 8
[[3]]
[1] NA NA 13
我哪里错了? apply家族有没有更聪明的方法?
注意索引。那是你想要的吗?
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]))
}
}
您可能正在寻找这样的东西:
numOfStations <- length(ice_1980)
average.ice <- lapply(1:numOfStations,
function(i) mapply(mean, ice_1980[[i]], ice_1990[[i]], ice_2000[[i]]))
我有一个与此 question 中提出的问题类似的问题,但是我对获取列表中的元素均值不感兴趣,而是对跨列表的元素中的每个索引值感兴趣。
给我这三个列表
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]))
}
}
但是我在输出中得到了 NA
average.ice
[[1]]
[1] 1 2 3
[[2]]
[1] NA NA 8
[[3]]
[1] NA NA 13
我哪里错了? apply家族有没有更聪明的方法?
注意索引。那是你想要的吗?
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]))
}
}
您可能正在寻找这样的东西:
numOfStations <- length(ice_1980)
average.ice <- lapply(1:numOfStations,
function(i) mapply(mean, ice_1980[[i]], ice_1990[[i]], ice_2000[[i]]))