我有一个在5列数据帧上运行的函数。最后我想发布这个功能,以便其他人可以将它与自己的数据一起使用。
设计一个允许用户传入5个必需列的函数的惯用R方法是什么?
即。我的函数想要处理一个包含(至少)列'a','b','c','d','e'的数据帧,但在用户的数据框中,它们的标记方式不同,例如' foo','bar'等...
有几种可能性,虽然没有一种对我来说特别优雅:
答案 0 :(得分:1)
没有一种“最好”的方法可以做到这一点。不同方法的优点根据情况而有所不同。在这个例子中,我个人的偏好是给函数(至少)两个参数:data.frame as“data”和包含变量名称的字符向量。
然后,如果您对这些操作应用相同的操作,则可以将字符向量作为sapply
或lapply
的主要参数。
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]>)
通常最好提供变量的名称而不是它们的位置,因为位置可能会在数据集之间发生变化。