我已经获得了一个扩展的脚本,并且我已经看到了这个模式:
subset_column.vals <- function(x, col, selectors) {
return(x[which(x$col %in% selectors),])
}
经过一段时间的困惑,我发现它根据列中值的存在来设置数据集。为了使代码更容易阅读,我想将它抽象为一个函数。像这样:
{{1}}
但该函数总是返回一个0行的数据帧。即使函数外部具有相同输入的表达式返回预期结果。任何人都知道出了什么问题?
答案 0 :(得分:1)
已有功能可以非常高效地完成此任务。例如:
dplyr
:dplyr::filter(x,col %in% selectors)
subset(x,col %in% selectors)
如果我们真的想写另一个,那就行了:
subset_column_vals <- function(x, col, selectors) {
return(x[x[,col] %in% selectors,])
}
subset_column_vals(iris,"Species",c("setosa"))
请注意,我们使用[
代替$
来对data.frame进行子集化,因为$
对引用的参数不起作用。