使用"..."R 函数中的输入



我正在组合一个R函数,该函数通过文档中描述的...参数接受一些未定义的输入:

"…"特殊可变长度参数***

其想法是用户将在此处输入多个列名,每个列名都属于用户指定的数据集。然后,这些列将通过tapply与因变量进行交叉表列比较。函数是返回一个表(自变量x独立变量)。

因此,我尝试了:

plotter=function(dataset, dependent_variable,  ...) 
{

indi_variables=list(...); # making a list of the ... input as described in the docs
result=with (dataset, tapply(dependent_variable, indi_variables, mean); # this fails
}

我认为这应该起作用,因为tapply可以将列表作为输入。但在这种情况下并没有("tapply中的错误…参数必须具有相同的长度">),我认为这是因为indi_variables是字符串列表。如果我手工输入列表的内容,去掉引号,一切都会很好。

但是,如果用户将列名作为非字符串提供给函数,R将把它们解释为变量名;我不知道如何以正确的方式转换列表indi_variables,尝试以下操作失败:

indi_variables=lapply(indi_variables, as.factor)

所以我想知道

  • 是什么原因导致了上述错误?我的解释正确吗
  • 如何以正确的方式转换通过...创建的列表
  • tapply的输入或实现中,是否有一种总体上更好的方法来做到这一点

非常感谢您的帮助!

感谢Joran的有益阅读,我提出了这些改进,使事情变得更好。。。

indi_variables=substitute(list(...));
result=with (dataset, tapply(dependent_variable, eval(indi_variables, dataset), FUN=mean));

相关内容

  • 没有找到相关文章