【发布时间】:2016-07-08 12:26:35
【问题描述】:
假设您有一个 3 x 3 矩阵 m,其中包含一个或多个零,并且您希望将每个零替换为给定数字。
替换必须遵循此规则:
如果在m 的第一列找到零,则应将其替换为向量v 的第一个元素,如果在m 的第二列找到零,则应将其替换为向量v 的第二个元素,第三列/向量元素也是如此。
矩阵和向量分别是:
m <- matrix(c(0,2,3,4,0,6,0,8,0), 3, 3, byrow = TRUE)
v <- c(1,5,9)
当然,v 的length 必须与m 中的列数匹配。所以矩阵是这样的:
0 2 3
4 0 6
0 8 0
我希望每当 R 在 m 的第一列中找到零时,它会将其替换为向量 v 的第一个元素,依此类推,这样最终的结果将是:
1 2 3
4 5 6
1 8 9
我做了很多研究,还没有找到解决这个问题的方法。有人可以帮忙吗?
【问题讨论】:
-
m[m==0] <- v[1]给出了想要的结果 -
在你想要的结果中,与你的问题描述相反,你总是用
v[1]替换零。 -
您的描述听起来好像结果应该是
matrix( c(1,4,1,2,5,8,3,6,9), 3) -
是的,在我的描述中,我未能正确重现最终结果。我将编辑问题以更正此问题。
-
@42-:感谢您的编辑。我注意到您添加了
byrow = TRUE。
标签: r matrix replace dataframe