【发布时间】:2011-10-18 17:24:17
【问题描述】:
我有一个 2D 矩阵 mat 有 500 行 × 335 列,还有一个 data.frame dat 有 120425 行。 data.frame dat 有两列I 和J,它们是用于索引行的整数,列来自mat。我想将mat 中的值添加到dat 的行中。
这是我的概念失败:
> dat$matval <- mat[dat$I, dat$J]
Error: cannot allocate vector of length 1617278737
(我在 Win32 上使用 R 2.13.1)。再深入一点,我发现我在滥用矩阵索引,因为我似乎只得到了mat 的子矩阵,而不是我预期的一维值数组,即:
> str(mat[dat$I[1:100], dat$J[1:100]])
int [1:100, 1:100] 20 1 1 1 20 1 1 1 1 1 ...
我期待像int [1:100] 20 1 1 1 20 1 1 1 1 1 ... 这样的东西。使用行、列索引来索引二维矩阵以获取值的正确方法是什么?
【问题讨论】:
-
+1 用于一个有趣的问题(这引出了另一个问题:为什么在传递
[运算符 N 向量的 N -维矩阵?) -
好问题 - 我稍微编辑了它以修复我 认为 是一个错字(
datI到dat$I)。如果这不是您的意思,请随时撤消...