如何(N x 1)
用(N x M)
矩阵轻松替换矩阵的向量/列,(N x K)
以便结果是(N x (M - 1 + K))
矩阵?
示例:
a <- matrix(c(1, 3, 4, 5), nrow = 2) # (2 x 2)
b <- matrix(c(1, 3, 5, 6, 7, 7), nrow = 2) # (2 x 3)
我现在想做这样的事情:
a[, 1, drop = FALSE] <- b # Error
R不喜欢。
我能想到的只有两步方法:附加b
到第a
1 列并随后删除。问题:它混合了列出现的顺序。
基本上,我想要一个简单的替换。我相信以某种方式是可能的。
您可以使用 cbind:
cbind(b, a[,-1])
# [,1] [,2] [,3] [,4]
#[1,] 1 5 7 4
#[2,] 3 6 7 5
如果你需要插入一个大矩阵的中间(比如,在 N 列),而不是一端,你可以使用,
cbind(a[, 1:(N-1)], b, a[, (N+1):NCOL(a)])
对于适用于任何插入位置(开始、中间或结束)的通用版本,我们可以使用
a <- matrix(1:10, nrow = 2)
b <- matrix(c(100, 100, 100, 100, 100, 100), nrow = 2)
N <- 6 # where we want to insert
NMAX <- NCOL(a) # the largest column where we can insert
cbind(a[, 0:(N-1)], b, {if(N<NMAX) a[,(N+1):NMAX] else NULL})
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句