我有一个包含14个三维数组的列表(参见下面的扩展名)。
我的目标是:
为每个气候模型找到10个网格点,其中所有气候参数最适合,即最小的欧氏距离。因此,我想分别对所有14x4切片(=气候参数)进行z变换。
之后,我想在4个气候参数上对z变换值进行平均,这样每个气候模型都存在一个简单的2D阵列。我想从这些矩阵的每一个中挑选出具有最佳拟合的10个值/网格点,即最小的欧氏距离。
以下代码为 ztrans 返回一个包含14个矩阵的列表,每个矩阵包含ncol = 4
和nrow = 143,605
(385x373),而不是我所需的14个矩阵列表,每个矩阵包含{{ 1}}和ncol = 385
。所以我建议在计算中出错:
nrow = 373
两个最终函数在另一个ztrans <- list()
mean.ztrans <- list()
min.values <- list()
for (i in 1:length(models.list)) {
ztrans[[i]] <- apply(models.list[[i]], MARGIN = 3, function(x) (x - mean(x))/sd(x))
mean.ztrans[[i]] <- apply(ztrans[[i]], c(1,2), function(x) mean(x))
min.values[[i]] <- which(rank(mean.ztrans[[i]], ties.method='min') <= 10)
}
循环中工作没有问题。问题似乎在 ztrans 对象中。我想我错过了关于索引或保证金的一些内容。但我尝试了一切,我找不到任何解决方案。非常感谢您的帮助!
EXTENSION:这是我的 models.list 数据的示例输出
for