R功能参数

时间:2013-05-07 15:14:05

标签: r

随着我的项目变得越来越大,我发现很难跟踪所有参数。 R中是否有任何有效的方法,即结构中的聚合参数?

例如,在我的一个程序中,如果

take.bus = TRUE

然后将使用以下参数。

bus.number
bus.route
bus.stop

由于我的程序非常庞大,因此参数用法中有几个依赖于一个变量。当take.bus为FALSE时,我在想是否可以避免显示相关参数(即bus.number)。

我不确定这个问题是否适用于此。评论它是否偏离主题。

编辑:

更确切地说:考虑以下功能:

function(take.bus,bus.number, bus.route, bus.stop){

  if(take.bus == T){
    x<-temp.func(bus.number,bus.route,bus.stop)
   }
}

因此,如果“take.bus == F”

,将不会使用任何辅助参数“bus.number,bus.route,bus.stop”。

2 个答案:

答案 0 :(得分:0)

如果在特定的函数调用中没有使用这三个参数,则不必提供它们,即f(FALSE)不会引发错误。

这是R处理参数传递的一个特性,与其他流行语言略有不同。对于特定的函数调用,R不会评估提供的参数(缺少或不提供),除非实际需要执行该函数的参数。

答案 1 :(得分:0)

马修的答案在某些情况下有效,但你会发现如果你甚至在一个区块内使用参数,如果它们没有提供并且没有默认值,你将会收到错误。所以:

many <- function(one, two, three) {print (one);}
many("bob")
> "bob"

工作正常,但

more <- function(one, two, three) {
  print (one) 
  if(!is.null(two)) { 
    print(two)
  }
}
more("bob")
> [1] "bob"
> Error in is.null(two) : 'two' is missing

有问题。您可以为参数指定null的默认值,但是您需要实际传入参数。您可以使用ellipsis传递任意数量的参数(您可以选择命名它们)。检查省略号的界限有点​​棘手。有关详细信息,请参阅here

另外。

请勿使用“T”和“F”!

我可以指定T <- FALSEF <- TRUE,因为它们不是保留字。