gpt4 book ai didi

R,使用 dplyr::filter() 和 %in% 将列名作为参数传递给函数

转载 作者:行者123 更新时间:2023-12-04 10:07:14 26 4
gpt4 key购买 nike

如何在类似于问题 here 的函数中传递列名但使用 dplyr链接和 filter()连同%in% .

require(dplyr)
set.seed(8)
df <- data.frame(
A=sample(c(1:3), 10, replace=T),
B=sample(c(1:3), 10, replace=T))

如果想获取 A 列为 1 或 2 的行,我可以这样做:
df %>% filter(A %in% c(1,2))

我得到:
  A B
1 2 3
2 1 2
3 1 3
4 2 1
5 1 1
6 1 3

现在,我怎么能把它放在一个函数中,在那里可以指定列,这不起作用:
fun1 <- function(x, column, n){
res <-
x %>% filter(column %in% n)
return(res)
}
fun1(df, A, c(1,2))

最佳答案

你可以试试

fun1 <- function(x, column, n){
x %>%
filter_(lazyeval::interp(quote(x %in% y), x=as.name(column), y=n))
}
fun1(df, 'A', 1:2)

或者
fun2 <- function(x, column, n){
args <- as.list(match.call())
x %>%
filter(eval(args$column, x) %in% n)
}

fun2(df, A, 1:2)

关于R,使用 dplyr::filter() 和 %in% 将列名作为参数传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28324212/

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