我之前问过一个关于如何在没有引号的情况下获取文本/字符参数的问题,详情请参见此处。在我提出那个问题的场景中,参数数量是固定的,因此在函数定义中使用的eval(substitute())的数量对应着我拥有的参数数量。
现在,我遇到了一个场景,其中只有一个参数,例如factors
(见下文),用户可以指定多个列名而不使用引号 - 即,他们将使用factor1
而不是"factor1"
。我希望评估用户提供的每个列名。
foo<-function(data.frame, factors){
}
问题1:我想知道是否有一种方法可以在表达式数量可变的情况下,将eval(substitute())应用于多个表达式。
正如指出的那样,eval(substitute())可能存在潜在危险,并且在某些情况下可能失败。
问题2:那么除了使用引号括起来的列名之外,是否有更优雅的方法来处理此问题,如下所示:
foo<-function(data.frame, factors){
output<-data.frame[, factors]
output
}
foo(data.frame=dataset, factors=c("factor1", "factor2"))