【问题标题】:Extend matrix based on conditions in R根据 R 中的条件扩展矩阵
【发布时间】:2019-10-15 09:44:24
【问题描述】:

考虑以下随机矩阵:

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))

【问题讨论】:

    标签: r matrix


    【解决方案1】:

    您可以使用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 这行应该给出多少次。

    【讨论】:

    • 谢谢!如果 - 例如 - 我想根据 m[,1] == "r4" 的条件添加 2 行,我该如何添加?
    • m[rep(seq_len(nrow(m)), 1 + 2*(m[,1] == "r4")),]
    猜你喜欢
    • 1970-01-01
    • 2018-10-04
    • 2017-10-31
    • 1970-01-01
    • 2014-12-13
    • 2014-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多