【发布时间】:2013-03-09 19:35:59
【问题描述】:
我之前问过一个关于How to take in text/character argument without quotes 的问题。在我在那个问题中提供的场景中,参数的数量是固定的,所以我在函数定义中使用的 eval(substitute()) 的数量对应于我拥有的参数的数量。
现在我有一个场景,我有一个参数,例如factors(见下文),用户可以指定多个列名而不使用引号 - 即,他们将使用factor1 而不是@987654324 @。我想评估用户提供的每个列名。
foo<-function(data.frame, factors){
}
问题一:我想知道当表达式的数量可以变化时,是否有办法将 eval(substitute()) 应用于多个表达式。
正如所指出的,eval(substitute()) 可能存在潜在危险,并且在某些情况下可能会失败。
问题 2:除了使用如下所示的引用列名之外,是否有更优雅的方式来处理该问题:
foo<-function(data.frame, factors){
output<-data.frame[, factors]
output
}
foo(data.frame=dataset, factors=c("factor1", "factor2"))
【问题讨论】:
标签: r eval substitution