0

随着我的项目越来越大,我发现很难跟踪所有参数。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”

4

2 回答 2

0

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

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

于 2013-05-07T15:46:18.920 回答
0

Matthew 的答案在某些情况下有效,但您会发现,即使在块内使用参数,如果未提供参数且没有默认值,您也会收到错误消息。所以:

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 分配给参数,但随后您将需要实际传递参数。您可以使用省略号来传递任意数量的参数(并且您可以选择命名它们)。检查省略号的边界有点棘手。有关更多信息,请参见此处。

还。

不要使用“T”和“F”!

我可以分配T <- FALSEand F <- TRUE,因为它们不是保留字。

于 2013-05-07T15:58:03.717 回答