我有一个矩阵
1 2
1 3
我想复制每一列三次,以创建一个这样的矩阵:
1 1 1 2 2 2
1 1 1 3 3 3
我不认为我可以使用rep
。非常感谢任何帮助
答案 0 :(得分:5)
你可以在这种情况下使用rep,而不是在矩阵本身。 这样做你想要的:
mat1 = cbind(c(1,1), c(2,3))
mat2 = mat1[, rep(1:2, each=3)]
答案 1 :(得分:1)
假设您的初始矩阵称为m1
,则可以选择一个选项:
m2 <- matrix(data = apply(m1, 2, function(x) rep(x, 3)), ncol = ncol(m1)*3)
答案 2 :(得分:1)
您实际上可以在rep
内使用一个matrix
。
m <- matrix(c(1, 1, 2, 2), nrow = 2)
matrix(rep(as.numeric(t(m)), each = 3), nrow = nrow(m), byrow = TRUE)
根据矩阵的大小,这可能比使用apply
更快。