【问题标题】:Replace a partition of a column of a matrix with a vector用向量替换矩阵列的分区
【发布时间】:2021-12-31 12:22:33
【问题描述】:

我有 2 个矩阵/数据框,A 和 B,每个尺寸为 50x30。

如何将矩阵 A 的每列的前 11 个元素分别替换为矩阵 B 的每列的 11 个元素,而不必循环每列?

示例(对于矩阵 3x3 和 n_replace = 2):

matrix A      matrix B         resultant matrix
v1 v2 v3     v1 v2 v3          v1 v2 v3
1  2  1      12 99 .31   ->    12 99 .31    # replaced from matrix B
5  4  1      33 .2 12          33 .2 12     # replaced from matrix B
9  2  3      10 .3 14          9  2  3      # remained from matrix A

我想我可以做类似的事情

for(i in 1:3) {
   replace(A[,i], c(1:n_replace), B[1:n_replace,i])
}

但是在 R 中是否有更直接/更智能的方法来做到这一点?

【问题讨论】:

    标签: r dataframe loops matrix multiple-columns


    【解决方案1】:

    从你的例子中,你可以这样做:

    A[1:2,] <- B[1:2,]
    A
    #     [,1] [,2]  [,3]
    #[1,]   12 99.0  0.31
    #[2,]   33  0.2 12.00
    #[3,]    9  2.0  3.00
    

    如果要替换每列前11个元素的值,逻辑是一样的:

    A[1:11,] <- B[1:11,]
    

    数据

    A = matrix(c(1,5,9,2,4,2,1,1,3),nrow=3)
    B = matrix(c(12,33,10,99,.2,.3,.31,12,14),nrow=3)
    

    【讨论】:

      【解决方案2】:

      试试这个:

      df_result <- df[1:11,]<- df1[1:11,]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-23
        • 1970-01-01
        • 2017-08-13
        • 2015-01-28
        • 1970-01-01
        • 2017-02-27
        • 2019-12-17
        相关资源
        最近更新 更多