Arrays 在R中创建具有不同列数的数组

Arrays 在R中创建具有不同列数的数组,arrays,r,Arrays,R,这似乎是不可能的,所以我猜我正在考虑如何错误地处理数据,而不仅仅是我找不到一种方法来处理我想象中的数据。 我想创建一个三维阵列;我认为这就像一个关系数据库。所有维度的行数相同,但列数不同。 比如说, 维度1=1列,20个唯一位置标识符(行) 维度2=与20个唯一位置(行)相关的3列非生物变量 维度3=与20个唯一位置(行)相关的2列生物变量 我想这是设置数据的最好方法,这样我就可以轻松地遍历每一列,并且只需使用下标就可以轻松地在非生物或生物中组合(例如,我可以在第二(非生物)维度的所有变量(

这似乎是不可能的,所以我猜我正在考虑如何错误地处理数据,而不仅仅是我找不到一种方法来处理我想象中的数据。 我想创建一个三维阵列;我认为这就像一个关系数据库。所有维度的行数相同,但列数不同。 比如说,

  • 维度1=1列,20个唯一位置标识符(行)
  • 维度2=与20个唯一位置(行)相关的3列非生物变量
  • 维度3=与20个唯一位置(行)相关的2列生物变量
我想这是设置数据的最好方法,这样我就可以轻松地遍历每一列,并且只需使用下标就可以轻松地在非生物或生物中组合(例如,我可以在第二(非生物)维度的所有变量(列)上应用一个函数(例如,dat[,2]=log(dat[,2]),这可能与我想对所有生物变量所做的不同

这不是一种治疗组类型的分析,因此我不想要堆叠数据(我重复了5次唯一的位置,每个位置有多个治疗选项-这对这些数据没有意义,例如

loc   type   var
1      ab     1
1      ab     2
1      ab     3
1      bi     1
1      bi     2
我对这些数据的思考方式一成不变。过去我一直使用数组,而且下标对我来说非常直观。你真的能在每个维度中创建一个列数不同的数组吗?如果不能,我在如何处理这些数据方面缺少什么?
谢谢你的建议。

是的。你可以按照你的描述做

# build a 20 x 3 x 2 array
dat <- array(data, c(20,3,2))
# example of applying functions on a given dimension
log(dat[,,2])
#构建一个20 x 3 x 2的阵列

dat为什么维度1是它自己的东西?我不明白您可能会对20个唯一位置标识符(1:20?)应用什么样的函数,您不想影响具有相同唯一位置的其他维度。在我看来,它像一个宽的或长的data.frame.data.frame(loc,ab1,ab2,ab3,bi1,bi2)有20行或者你不想要的长版本。如果你想要ab@MfFlick,请索引你的两个变量类型-谢谢编辑…@BrodieG,我想我不小心删除了你的评论。抱歉-我通常不是那么笨拙。我想也许我只是自学了使用数组,现在是时候扩展了。这只是成为一个非常YYYY长的数据集t、 我发现数组更紧凑。我将用一个数据表来重做。谢谢!@ARobertson,例如,生物数据是明显的日志分布,而非生物数据不是。但更重要的是,这都是为了进行一组或“鲁棒性”测试,我们将按“类型”遍历各种“度量”的所有组合,对我来说,我可以通过维度和变量上的两个for循环轻松做到这一点。我确信这可以通过一个表来实现,但这对我来说并不那么直观。一个带有单独矩阵的列表可能是实现这一点的方法,你是对的。我会试试。谢谢。不,但是你的示例中的列数,对于两个维度s、 是3。我需要第一个三维空间有一个20x3的矩阵,第二个三维空间有一个20x2的矩阵。我不能用数组。这些都是根据用户界面的选择动态调整大小的,所以我认为用单独的矩阵列表是可行的。谢谢