【问题标题】:How to use indexing to replace a row of a matrix如何使用索引替换矩阵的一行
【发布时间】:2019-07-04 03:45:54
【问题描述】:

我想用单行向量代替 R 中矩阵的某些行。这是一个示例。
我想将“5,6”行替换为 A 中条目为 1 的行。所以,我想让“A”看起来像“A_goal”

我尝试的方法(见底线)很接近,但它似乎是在“列向下”而不是跨行写入。

A=matrix(c(1,2,1,3,1,2,1,3),4,2)
B=matrix(c(5,6),1,2)
A_goal = matrix(c(5,2,5,3,6,2,6,3),4,2)
A
B
A_goal

# Here is an attempt that didn't work:
A[A==1]=B
A

【问题讨论】:

    标签: r matrix indexing


    【解决方案1】:

    使用{<- 的矩阵索引是通过列主排序完成的。因此,您可能需要逐行使用 apply。这本质上是对 A 行的 for 循环。您还需要转置,因为 apply 也会将结果作为列传递:

     t(apply(A, 1, function(x) if(x[1]==1){B}else{x}))
         [,1] [,2]
    [1,]    5    6
    [2,]    2    2
    [3,]    5    6
    [4,]    3    3
    

    如果您只打算在行 c(1,1) 的地方进行替换,则需要将逻辑测试修改为 x == c(1,1)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-23
      • 2022-12-04
      • 1970-01-01
      • 2021-12-17
      相关资源
      最近更新 更多