0

假设我们有以下数据框:

df <- data.frame(x=1:10, odd=rep(c(T,F), 5))

还有一个存储odd列名的变量:

odd_col <- 'odd'

如何在操作中使用odd_col引用odddplyr::filter

从我在dplyr中引用的文档中读到的内容,我认为以下是正确的方法:

library(dplyr)

odd_col <- enquo(odd_col)

# give the rows with odd entries
filter(df, !!odd_col)

但这会导致错误:

错误:参数 2 过滤条件不计算为逻辑向量

但是,这种方法似乎适用于其他dplyr操作,例如,

pull(df, !!odd_col)
# [1]  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE
4

1 回答 1

1

我们可以使用sym而不是enquo因为它是一个字符串

library(dplyr)
filter(df, !!rlang::sym(odd_col))
# x  odd
#1 1 TRUE
#2 3 TRUE
#3 5 TRUE
#4 7 TRUE
#5 9 TRUE
于 2019-10-02T17:15:10.850 回答