gpt4 book ai didi

r - 如何将字符串传递给函数中的 dplyr 过滤器?

转载 作者:行者123 更新时间:2023-12-04 18:59:11 24 4
gpt4 key购买 nike

我正在寻找一种方法将字符串作为输入传递给 filter_在我自己的函数中的 dplyr 包中的函数。我已按如下方式设置数据框:

df = data.frame(
X1 = LETTERS[1:5],
X2 = c("apple", "apple", "apple", "banana", "banana")
)

我正在寻找一种编写函数的方法,我可以在其中传递“apple”或“banana”来过滤数据框。

我试过了:
filterFruit = function(Data, Fruit){
retVal = filter_(Data, "X2 == Fruit")
return(retVal)
}

然后传递值:
apple1 = filterFruit(df, "apple")
apple1

这将返回一个错误:
Error: object 'Fruit' not found

我已经尝试了其他几种方法都没有成功,我希望有人可以提供帮助。

编辑:

我已经意识到我不需要为此操作使用 filter_ ,因为我没有选择我要过滤的列,并且可以将参数传递给过滤器而不带引号。但是,问题仍然适用于您的情况:
df = data.frame(
X1 = LETTERS[1:5],
X2 = c("apple", "apple", "apple", "banana", "banana")
X3 = c("apple", "banana", "apple", banana", "apple")
)

并且需要决定您需要过滤的列(X2 或 X3)。

最佳答案

这应该回答您的编辑:

library(dplyr)

df = data.frame(
X1 = LETTERS[1:5],
X2 = c("apple", "apple", "apple", "banana", "banana"),
X3 = c("apple", "banana", "apple", "banana", "apple"),
stringsAsFactors=FALSE
)

column_string = "X2"
column_value = "banana"
column_name <- rlang::sym(column_string)

filtered_df <- df %>%
filter(UQ(column_name) == UQ(column_value))

filtered_df

关于r - 如何将字符串传递给函数中的 dplyr 过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42100892/

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