尽管与几个人讨论了这个问题,但我仍然无法解决我的问题,所以希望这里的社区可以提供帮助。
数据存储为数组列表。列表中的每个组件代表按特定因素分组的数据。数组具有三个维度。第一维代表时间,第二维代表成分数量,第三维代表数据点。因此,在每个组成部分(第二维)下方的示例数据中,每个时间单位(第一维)具有三个数据点(第三维)。
第一和第三维具有固定的 nrow(时间)和 ncol(数据点),而第二维因每个组(列表中的组件)而异,我为什么将数组存储在列表中。
所以数据的结构如下。
data.list <- vector("list", 3)
numb <- c(2,3,4)
data.list[[1]] <- array(1:(numb[1] * 5 * 3), dim = c(5, numb[1], 3))
data.list[[2]] <- array(1:(numb[2] * 5 * 3), dim = c(5, numb[2], 3))
data.list[[3]] <- array(1:(numb[3] * 5 * 3), dim = c(5, numb[3], 3))
如果我想计算第 1 组中所有成分的第一个数据点随时间的平均值(假设它没有存储在列表中),我会这样做:
apply(array[,, "data.point.1"], 1, mean)
现在我想在所有组(列表中的组件)和组成部分(数组中的第二维)中应用行(时间)的平均值 - 但我找不到解决方案。
我曾尝试使用 sapply ,因为基本上我想获得一个向量作为输出,其长度对应于数组的 nrow (本质上是这个问题中的时间段数)。但是, sapply 会在每个组件上应用一个函数并返回一个具有列表长度的向量(至少这对我来说是这样)。
任何人都可以看到解决这个问题的好方法吗?
如果不是,那么根本问题是,对于我想要进行的计算类型,数据可能以错误的方式存储吗?