【发布时间】:2020-02-01 00:17:17
【问题描述】:
假设我们有以下数据框:
df <- data.frame(x=1:10, odd=rep(c(T,F), 5))
还有一个存储odd列名称的变量:
odd_col <- 'odd'
如何在dplyr::filter 操作中使用odd_col 来引用odd 列?
根据我在the documentation on Quoting in 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
【问题讨论】:
-
它适用于 pull,因为 pull 确实接受字符串,即
pull(df, 'odd')有效,但filter(df, 'odd')无效。所以问题是你在字符串上使用 enquo 而不是原始变量名。