Это, вероятно, легко решить. У меня есть 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-матрицу с использованием индексов строки, столбца для получения значений?