R中的Lazyeval--如何构建子集函数?
我正在尝试在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,~
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 , ]}