gpt4 book ai didi

用向量的第 i 个元素替换在列 i 中找到的矩阵/数据帧值

转载 作者:行者123 更新时间:2023-12-04 23:41:30 25 4
gpt4 key购买 nike

假设您有一个 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)

当然, lengthv必须匹配 m 中的列数.所以矩阵是这样的:
0 2 3
4 0 6
0 8 0

我希望每当 R 在 m 的第一列中找到零时它用向量 v 的第一个元素替换它,依此类推,最终结果是:
1 2 3
4 5 6
1 8 9

我做了很多研究,但还没有找到解决这个问题的方法。有人可以帮忙吗?

最佳答案

m + t((t(m) == 0) * v)
# [,1] [,2] [,3]
# [1,] 1 2 3
# [2,] 4 5 6
# [3,] 1 8 9

或者
m + sweep(m == 0, 2, v, `*`)
# [,1] [,2] [,3]
# [1,] 1 2 3
# [2,] 4 5 6
# [3,] 1 8 9

关于用向量的第 i 个元素替换在列 i 中找到的矩阵/数据帧值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36140468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com