我有一个大小为500行×335列的二维矩阵mat
,以及一个包含120425行的数据框dat
。数据框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 ...
的内容。使用行列索引获取二维矩阵中的值的正确方式是什么?
[
运算符 N 个向量用于 N 维矩阵时,没有选项可以将行为更改为类似这样的行为?) - Ari B. FriedmandatI
改为dat$I
)。如果这不是你想要的,请随意撤销... - joran