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