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