R 中的输入变量名称处理

Input variable name handling in R

我想了解如何在函数中处理变量名的输入。例如,我写了这样一个函数:

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)

这个函数的目的是简单的取dataframe的一个子集给定sel,当sel没有给定的时候,排除y目标来自 dataframe.

的变量

我的问题是,如何在这个函数中正确引用 y?在输入中,y 是一个变量的名称。 deparse() 可以解决这个问题吗?

谢谢大家

我认为这会起作用:

bin_multi <- function(y, dataframe, sel = NULL){

  if(!is.null(sel)) {

     dataframe <- dataframe[,sel]

  } else {

     dataframe <- dataframe[,which(names(dataframe) != deparse(substitute(y)))]

  }

}

这是利用 this answer 将您的对象名称转换为字符串。