В R при использовании именованных строк можно ли добавить (объединить) столбец разреженной матрицы в другую разреженную матрицу?

У меня есть две разреженные матрицы, m1 и m2:

> m1 <- Matrix(data=0,nrow=2, ncol=1, sparse=TRUE, dimnames=list(c("b","d"),NULL))
> m2 <- Matrix(data=0,nrow=2, ncol=1, sparse=TRUE, dimnames=list(c("a","b"),NULL))
> m1["b",1]<- 4
> m2["a",1]<- 5
> m1
2 x 1 sparse Matrix of class "dgCMatrix"

b 4
d .
> m2
2 x 1 sparse Matrix of class "dgCMatrix"

a 5
b .
>

и я хочу cbind() сделать из них разреженную матрицу, например:

  [,1] [,2] 
a    .    5
b    4    .
d    .    .

однако cbind() игнорирует именованные строки:

> cbind(m1[,1],m2[,1])
  [,1] [,2]
b    4    5
d    0    0

есть ли способ сделать это без цикла грубой силы?


person ayman    schedule 19.03.2010    source источник
comment
Это сработает, если вы сопоставите позиции и имена: m1 ‹- Matrix(data=0,nrow=4, ncol=1, sparse=TRUE, dimnames=list(c(a,b,c,d),NULL)) m2 ‹- Matrix(data=0,nrow=4, ncol=1, sparse=TRUE, dimnames=list(c(a,b,c,d),NULL)) m1[b,1]‹- 4 m2[ a,1]‹- 5 cbind(m1[,1],m2[,1]), но я понимаю, что это не ответ на ваш вопрос..   -  person momobo    schedule 20.03.2010
comment
Спасибо, я мог бы переработать свой код, чтобы справиться с этим.   -  person ayman    schedule 21.03.2010


Ответы (1)


Вы должны отправить вопрос Мартину Мейхлеру, автору большей части пакета Matrix. Существует функция cBind, но в настоящий момент она не распознает имена строк, а только размеры, по крайней мере, насколько я могу судить (даже при увеличении аргумента deparse.level до 2).

person IRTFM    schedule 21.03.2010