在R中,当使用命名行时,是否可以将稀疏矩阵列添加(连接)到另一个稀疏矩阵?

aym*_*man 5 r matrix sparse-matrix cbind

我有两个稀疏矩阵,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 .
>
Run Code Online (Sandbox Code Playgroud)

我希望cbind()他们制作一个稀疏矩阵,例如:

  [,1] [,2] 
a    .    5
b    4    .
d    .    .
Run Code Online (Sandbox Code Playgroud)

但是cbind()忽略命名的行:

> cbind(m1[,1],m2[,1])
  [,1] [,2]
b    4    5
d    0    0
Run Code Online (Sandbox Code Playgroud)

有没有没有暴力循环的方法吗?

42-*_*42- 2

您应该将问题发送给 Martin Maechler,他是 Matrix 包大部分内容的作者。有一个 cBind 函数,但它目前不能识别行名,只能识别维度,至少据我所知(即使将 deparse.level 参数增加到 2 时也是如此)。