Esto es probablemente simple de resolver. Tengo una matriz 2D mat
con 500 filas × 335 columnas y un data.frame dat
con 120425 filas. El data.frame dat
tiene dos columnas I
y J
, que son números enteros para indexar la fila, columna de mat
. Me gustaría agregar los valores de mat
a las filas de dat
.Valores de índice de una matriz usando fila, col indicies
Aquí es mi conceptual fallan:
> dat$matval <- mat[dat$I, dat$J]
Error: cannot allocate vector of length 1617278737
(estoy usando R 2.13.1 en Win32). Profundizando un poco más, veo que mal uso de la indexación matricial, ya que parece que solo obtengo una submatriz de mat
, y no una matriz de valores de una dimensión como esperaba, es decir:
> 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 ...
Esperaba algo como int [1:100] 20 1 1 1 20 1 1 1 1 1 ...
. ¿Cuál es la forma correcta de indexar una matriz 2D usando índices de fila, columna para obtener los valores?
+1 para una pregunta interesante (que plantea otra pregunta: ¿por qué no hay una opción para cambiar el comportamiento a algo un poco más como esto al pasar el '' 'operadores N vectores para una N-dimensional matriz?) –
Buena pregunta - Lo edité muy ligeramente para arreglar lo que * creo * es un error tipográfico ('datI' a' dat $ I'). Si esto no es lo que quería decir, siéntase libre de deshacer ... – joran