Это, вероятно, просто решить.У меня есть 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
(я использую R 2.13.1 на Win32).Углубившись немного глубже, я вижу, что неправильно использую матричную индексацию, поскольку кажется, что я получаю только субматрицу 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 ...
.Как правильно индексировать 2D матрицу, используя индексы строки, столбца для получения значений?