【问题标题】:Creating an Array with different number of columns in R在 R 中创建具有不同列数的数组
【发布时间】:2014-11-11 22:24:28
【问题描述】:

这似乎不可能,所以我的猜测是我正在考虑如何不正确地处理我的数据,而不仅仅是我找不到按照我设想的方式处理它的方法。 我想创建一个 3 维数组;我认为这就像一个关系数据库。所有维度将具有相同的行数,但它们具有不同的列数。 例如,

  • 维度 1 = 1 列,20 个唯一位置标识符(行)
  • 维度 2 = 3 列与 20 个独特位置(行)相关的非生物变量
  • 维度 3 = 2 列与 20 个独特位置(行)相关的生物变量

我认为这将是设置我的数据的最佳方式,这样我就可以轻松地浏览每一列,并且只需使用下标就可以轻松地在非生物或生物中组合(例如,我可以将一个函数应用于所有变量(列)在第二(非生物)维度中(例如,dat[,,2] = log(dat[,,2]),这可能与我想对所有生物变量做的事情不同。

这不是一个治疗组类型的分析,所以我不想要堆叠数据(我重复独特的位置 5 次,每个位置有多个治疗选项 - 这对我来说没有意义,例如,

loc   type   var
1      ab     1
1      ab     2
1      ab     3
1      bi     1
1      bi     2

我对这些数据的思考方式感到困惑。过去我一直使用数组,并且下标对我来说非常直观。您确实可以制作一个在每个维度中具有不同列数的数组吗?如果没有,我对如何处理这些数据缺少什么? 感谢您的任何想法。

【问题讨论】:

  • 为什么维度 1 是它自己的东西?我不明白您可能对 20 个唯一位置标识符(1:20?)应用什么样的功能,您不希望影响具有相同唯一位置的其他维度。对我来说,它看起来像一个宽或长的 data.frame。 data.frame(loc,ab1,ab2,ab3,bi1,bi2) 有 20 行或您不想要的长版本。如果您想要 ab
  • @MfFlick - 感谢您的编辑...
  • @BrodieG,我想不小心删除了你的评论。道歉 - 我通常不那么笨拙。我想也许我只是自学了使用数组,现在是时候扩展了。这只是一个非常长的数据集;我发现数组更紧凑。我会用数据表重做这个。谢谢!
  • @ARobertson,例如,生物数据显然是对数分布的,而非生物数据则不是。但更重要的是,这一切都是为了进行一组或“稳健性”测试,我们通过“类型”遍历各种“指标”的所有组合,对我来说,我可以通过维度上的几个 for 循环轻松做到这一点和变量。我确信它可以使用表格来完成,但它对我来说几乎没有那么直观。具有单独矩阵的列表可能是执行此操作的方法,您是对的。我会试试的。谢谢。

标签: arrays r


【解决方案1】:

是的。您可以按照您的描述使用

# 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])

不要求数组的维度大小相等。

【讨论】:

  • 否,但您的示例中的列数,对于两个第 3 维,都是 3。我需要第一个第三维有一个 20x3 的矩阵,第二个第三维有 20x2。我不能用数组做到这一点。这些正在根据用户界面选择即时调整大小,因此我认为具有单独矩阵的列表是可行的方法。谢谢
猜你喜欢
  • 2019-08-01
  • 1970-01-01
  • 2018-08-13
  • 1970-01-01
  • 2018-04-12
  • 1970-01-01
  • 1970-01-01
  • 2017-11-19
  • 1970-01-01
相关资源
最近更新 更多