考虑以下随机矩阵:
m <- cbind(c("r1","r2","r3","r4","r1","r2","r3","r4"),c(3,2,5,2,5,2,6,4))
我想根据条件扩展它。例如,如何在带有单元格“r4”的每一行下创建一个额外的行,其中的值与带有单元格“r4”的行中的值完全相同。因此,我最终会得到以下矩阵:
m <- cbind(c("r1","r2","r3","r4","r4","r1","r2","r3","r4","r4"),c(3,2,5,2,2,5,2,6,4,4))
您可以使用rep
复制单元格r4
喜欢的每一行:
m[rep(seq_len(nrow(m)), 1 + (m[,1] == "r4")),]
# [,1] [,2]
# [1,] "r1" "3"
# [2,] "r2" "2"
# [3,] "r3" "5"
# [4,] "r4" "2"
# [5,] "r4" "2"
# [6,] "r1" "5"
# [7,] "r2" "2"
# [8,] "r3" "6"
# [9,] "r4" "4"
#[10,] "r4" "4"
m[,1] == "r4"
给出一个逻辑向量,你可以在其中加 1 来告诉rep
应该给这行多少次。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句