Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.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中的Lazyeval--如何构建子集函数?_R_Lazy Evaluation - Fatal编程技术网

R中的Lazyeval--如何构建子集函数?

R中的Lazyeval--如何构建子集函数?,r,lazy-evaluation,R,Lazy Evaluation,我正在尝试在R中构建一个子集函数,它将接受数据帧和列名,并使用所述的lazyeval方法遇到问题。这是我的密码: iris_fun <- function(df, selection_var, selection_input){ temp <- subset(df, ~.data[[.env$selection_var]] == .env$selection_input) return(temp) } 我收到一条错误消息: subset.data.frame(df,~

我正在尝试在R中构建一个子集函数,它将接受数据帧和列名,并使用所述的lazyeval方法遇到问题。这是我的密码:

iris_fun <- function(df, selection_var, selection_input){

  temp <- subset(df, ~.data[[.env$selection_var]] == .env$selection_input)

  return(temp)

}
我收到一条错误消息:

subset.data.frame(df,~.data[[.env$selection\u var]]==selection\u input)中出错: “子集”必须是逻辑的


谢谢你的建议

R
子集
函数不是为编程而设计的。这将满足您的要求,无需任何非标准评估混淆:

iris_fun <- function(df, selection_var, selection_input){
                     df[ df[[selection_var]] == selection_input , ]}

你的问题毫无意义。你到底想做什么?@HongOoi,我正试图构建一个函数,该函数将根据给定的条件(实际上来自另一个数据帧)对一个数据帧进行子集划分。现在,我正在尝试让第一部分工作——基于变量和值进行子集设置,该变量和值将作为函数的输入(以及数据帧)。在该示例中,hadley重新定义了
子集
,因此它不再是
base::subset
请参见:@rawr您100%正确-谢谢!我的轮子花了太多时间旋转。
iris_fun <- function(df, selection_var, selection_input){
                     df[ df[[selection_var]] == selection_input , ]}