在R中,如何对函数的参数使用“null”默认值?

时间:2011-07-01 20:46:27

标签: r default-value

这是我目前的代码:

my.function <- function( my.arg="" ){
  if(my.arg == "")
    my.arg <- rnorm(10)
  return( mean(my.arg) )
}

它让我回答:

> my.function( rbinom(10, 100, 0.2) )
[1] 18.5
Warning message:
In if (a == "") a <- rnorm(10) :
  the condition has length > 1 and only the first element will be used

我尝试使用my.arg=c()my.arg=0,但我总是收到警告或错误。 R手册在这个问题上没有说太多。

有什么想法吗?提前谢谢!

3 个答案:

答案 0 :(得分:18)

尝试

my.function <- function( my.arg=NULL ){
 if(is.null(my.arg)) ...

答案 1 :(得分:11)

还有missing

my.function <- function(my.arg) {
  if(missing(my.arg)) ...

答案 2 :(得分:3)

卡斯滕的方法是正确的。警告的原因是你正在测试my.arg对“”这是一个长度为1的字符向量,因此当my.arg是长度为&gt;的向量时发出警告。 1。 如果你真的想测试my.arg是否是“”,你需要做类似

的事情
if (length(my.arg) == 1 && my.arg == "")