我想用一个单行向量代替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
答案 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)