如何使用索引替换矩阵的一行

时间:2019-02-10 14:05:16

标签: r matrix indexing

我想用一个单行向量代替R中矩阵的某些行。这是一个示例。
我想用行“ 5,6”代替条目为1的A中的行。因此,我想使“ 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

1 个答案:

答案 0 :(得分: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)