【发布时间】:2017-02-21 13:01:22
【问题描述】:
我想了解如何处理函数中变量名的输入。比如我写了一个这样的函数:
bin_multi <- function(y, dataframe, sel = NULL){
if(!is.null(sel)) {
dataframe <- dataframe[,sel]}
else {
dataframe <- dataframe[!y]}
}
其中dataframe 是输入数据帧,y 是数据帧中的目标变量,sel 是从dataframe 中选择的列,例如sel = c(1,2,3)。
此函数的目的是简单地获取具有给定sel 的dataframe 的子集,并且当未给出sel 时,从dataframe 中排除y 目标变量。
我的问题是,我怎样才能在这个函数中正确引用y?在输入中,y 是变量的名称。 deparse() 能解决这个问题吗?
谢谢大家。
【问题讨论】:
-
输入 y 作为字符向量,然后使用
grep或grepl:dataframe <- dataframe[!grepl(y, names(dataframe), fixed=TRUE)]。 -
@lmo 谢谢!但是如果不输入 y 作为字符呢?因为这只是完整功能的一小部分,如果将 y 作为字符输入,那么其余部分会变得更加混乱。
-
我不清楚它会如何变得更混乱,但一个简单的解决方案是在函数顶部复制 y 并在整个过程中使用它:
myY <- dataframe[, y]。然后在您的代码中将 y 替换为 myY。 -
@lmo 也可以!
标签: r input variable-names