gpt4 book ai didi

r - str_replace_all 不在管道中工作

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

这是我的代码:

df <- df %>%
filter(conditions x, y, and z) %>%
str_replace_all(string, pattern, replacement)

这样做时,我收到错误:
Error in str_replace_all(., string, pattern, replacement) :
unused argument("")

我知道代码在复制方面一点用处都没有,正如我之前所说,我不能共享数据,但假设输入是正确的(我已经通过改变变量来让它工作)。替换是一个空字符串,但据我所知,这应该无关紧要。

我只是好奇为什么 str_replace_all 在管道中不起作用,有人有任何见解吗?

最佳答案

编辑:看来@akrun 已经删除了他的答案,因此转载如下。我做出了(可能是错误的)假设您希望转换整个数据帧,并且数据帧的格式正确。这些问题可以通过更清晰的问题和样本数据来避免。

如果不知道全局变量的值和数据(您可以生成假数据,顺便说一句,只要它存在相同的问题),这有点难以判断,但我的猜测如下。

管道传输时,前一个结果将作为下一个函数的第一个参数传入。您可以在错误消息中看到这一点:Error in str_replace_all(., string, pattern, replacement) -- .,显示管道输入参数。 Here ,第一个参数是“字符串”。因此,管道输入的结果被用作 string , "string"用作 pattern , “模式”用于 replacement ,而您用于替换的 ""被保留为未使用的参数,从而导致您的错误。

可能有助于使用 str_replace_all(pattern, replacement) ,或指定参数:str_replace_all(pattern = pattern, replacement = replacement)
前任。

data <- as.data.frame(matrix(ncol=2, nrow=2))
data$V1 <- c(" NA", "foo")
data$V2 <- c("bar", "boo")
data %>%
str_replace_all("oo", "xx")

如果您只想转换一列(来自@akrun):
简单地使用 mutate 基于预先存在的列创建一个新列。如果您想替换该列,请为其指定相同的名称:

前任。
data <- as.data.frame(matrix(ncol=2, nrow=2))
data$V1 <- c(" NA", "foo")
data$V2 <- c("bar", "boo")
data
V1 V2
1 NA bar
2 foo boo

#new column
data %>%
mutate(new = str_replace_all(V1, "oo", "xx"))

V1 V2 new
1 NA bar NA
2 foo boo fxx

#column replacement
data %>%
mutate(V1 = str_replace_all(V1, "oo", "xx"))

V1 V2
1 NA bar
2 fxx boo

关于r - str_replace_all 不在管道中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45871812/

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