r - Index values from a matrix using row, col indicies -
this simple solve. have 2d matrix mat
500 rows × 335 columns, , data.frame dat
120425 rows. data.frame dat
has 2 columns i
, j
, integers index row, column mat
. add values mat
rows of dat
.
here conceptual fail:
> dat$matval <- mat[dat$i, dat$j] error: cannot allocate vector of length 1617278737
(i using r 2.13.1 on win32). digging bit deeper, see i'm misusing matrix indexing, appears i'm getting sub-matrix of mat
, , not single-dimension array of values expected, i.e.:
> 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 ...
i expecting int [1:100] 20 1 1 1 20 1 1 1 1 1 ...
. correct way index 2d matrix using indices of row, column values?
almost. needs offered "[" 2 column matrix:
dat$matval <- mat[ cbind(dat$i, dat$j) ] # should it.
there caveat: although works dataframes, first coerced matrix-class , if non-numeric, entire matrix becomes "lowest denominator" class.
Comments
Post a Comment