Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 过滤函数不返回过滤后的df_R_Dplyr - Fatal编程技术网

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_func
second_func
应该是
second_func,它作为独立函数工作。。。但是,如果嵌套到第二个函数中,则过滤不起作用:second_func
second_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