R 过滤函数不返回过滤后的df
我有这样一个函数:R 过滤函数不返回过滤后的df,r,dplyr,R,Dplyr,我有这样一个函数: sub_set <- function(var) { varname <- enquo(var) dict <- filter(dictionary, var == !!varname) return(dict) } dict <- sub_set(Age) sub\u set使用enexpr将var转换为name类对象,然后将as\u string转换为字符串 library(dplyr) library(rlang) s
sub_set <- function(var) {
varname <- enquo(var)
dict <- filter(dictionary, var == !!varname)
return(dict)
}
dict <- sub_set(Age)
sub\u set使用enexpr
将var
转换为name
类对象,然后将as\u string
转换为字符串
library(dplyr)
library(rlang)
sub_set <- function(var) {
varname <- as_string(enexpr(var))
dict <- filter(dictionary, var == !!varname)
return(dict)
}
dictionary <- data.frame(var = c("Age", "x"), var2 = 1:2) # test data
dict <- sub_set(Age)
dict
## var var2
## 1 Age 1
库(dplyr)
图书馆(rlang)
子集合使用enexpr
将var
转换为name
类对象,然后将转换为字符串
library(dplyr)
library(rlang)
sub_set <- function(var) {
varname <- as_string(enexpr(var))
dict <- filter(dictionary, var == !!varname)
return(dict)
}
dictionary <- data.frame(var = c("Age", "x"), var2 = 1:2) # test data
dict <- sub_set(Age)
dict
## var var2
## 1 Age 1
库(dplyr)
图书馆(rlang)
sub_set你想用var==!!varname
,看起来您是在针对列本身进行测试?示例数据和输出将有助于理解发生了什么。var是列的名称,因此如果列的值为“Age”,我希望它过滤该列。在df中,var列的类型是stringWhat,您试图用var==!!varname
,看起来您是在针对列本身进行测试?示例数据和输出将有助于理解发生了什么。var是列的名称,因此如果列的值为“Age”,我希望它过滤该列。在df中,var列的类型为stringIt,它作为一个独立函数工作。。。但是,如果嵌套到第二个函数中,则过滤不起作用:second_funcsecond_func
应该是second_func,它作为独立函数工作。。。但是,如果嵌套到第二个函数中,则过滤不起作用:second_funcsecond_func
应为second_func
sub_set_base <- function(var) {
varname <- deparse(substitute(var))
subset(dictionary, var == varname)
}
sub_set_base(Age)
## var var2
## 1 Age 1
sub_set_fo <- function(fo) {
subset(dictionary, var == all.vars(fo))
}
sub_set_fo(~Age)
## var var2
## 1 Age 1