R 函数引用用户数据框中的列的正确方法?

Correct way for R function to reference columns in user's dataframe?

我有一个函数可以对数据框的 5 列进行操作。最终我想发布这个功能,以便其他人可以使用它来处理他们自己的数据。

设计允许用户传入 5 个必需列的函数的惯用 R 方法是什么?

即我的函数想要处理包含(至少)列 'a'、'b'、'c'、'd'、'e' 的数据框,但在用户数据中frame 它们的标记不同,例如 'foo'、'bar' 等...

有几种可能性,尽管 none 有些对我来说特别优雅:

没有一种 "best" 方法可以做到这一点。不同方法的优点因情况而异。在这种情况下,我个人的偏好是给函数(至少)两个参数:data.frame 作为 "data" 和包含变量名称的字符向量。

然后,如果您对这些中的每一个应用相同的操作,您可以将字符向量作为主要参数提供给 sapplylapply

myFunc <- function(data=NULL, variables=NULL) {
  if(is.null(data) stop("need a dataset")
  if(is.null(variables) | !is.character(variables) stop("variables improperly supplied")
}
  sapply(variables, FUN=funciton(i) <doStuff to data[, i]>) 

通常最好提供变量的名称而不是它们的位置,因为位置可能会在数据集之间发生变化。