gpt4 book ai didi

替换向量中的给定值

转载 作者:行者123 更新时间:2023-12-03 10:07:27 24 4
gpt4 key购买 nike

我正在寻找一个函数,它将用另一个值替换一个值的所有出现。
例如,我想用 1 替换所有的零。
我不想将结果存储在变量中,但希望能够匿名使用向量作为更大表达式的一部分。

我知道如何自己编写一个合适的函数:

> vrepl <- function(haystack, needle, replacement) {
+ haystack[haystack == needle] <- replacement
+ return(haystack)
+ }
>
> vrepl(c(3, 2, 1, 0, 4, 0), 0, 1)
[1] 3 2 1 1 4 1

但我想知道是否有一些标准功能可以完成这项工作,最好来自 base包,作为其他一些常用包的替代品。我相信使用这样的标准可能会使我的代码更具可读性,而且我不必在需要的地方重新定义该函数。

最佳答案

也许 replace是你要找的:

> x = c(3, 2, 1, 0, 4, 0)
> replace(x, x==0, 1)
[1] 3 2 1 1 4 1

或者,如果您没有 x (有什么具体原因吗?):
replace(c(3, 2, 1, 0, 4, 0), c(3, 2, 1, 0, 4, 0)==0, 1)

很多人都熟悉 gsub ,因此您还可以尝试以下任一方法:
as.numeric(gsub(0, 1, x))
as.numeric(gsub(0, 1, c(3, 2, 1, 0, 4, 0)))

更新

看完评论,或许 with是一个选项:
with(data.frame(x = c(3, 2, 1, 0, 4, 0)), replace(x, x == 0, 1))

关于替换向量中的给定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11737193/

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