在函数中设置默认值?

Posted

技术标签:

【中文标题】在函数中设置默认值?【英文标题】:Setting the default value in a function? 【发布时间】:2012-11-04 19:19:55 【问题描述】:

下面有一个简单的密度函数:

dpower <- function(x, b, r)
if ((b <= 0 | r <= 0)) 
return("Wrong parameters entered!")
else
 density.temp <- (r/b)*(x/b)^(r - 1)
 density.temp[which(x >= b | x <= 0)] <- NA
 return(density.temp)
  

此函数返回与参数 b 和 r 的指定分布中的值 x 对应的密度。我想在 x 上设置默认值,如果用户不指定 x,则默认值通过。我们可以简单地设置 dpower

seq(from = 0.05, to = b, by = 0.001)

感谢您的帮助,

【问题讨论】:

如果没有'x',你打算如何调用该函数? 嗨,马修,只有 b 和 r。我想让 R 知道如果 x 没有被调用(即 dpower 只有两个参数),那么 R 使用 x 的默认值。 可以,但是如果'x'参数在列表的最后一个就容易多了。 是的,我明白了……那么我们可以把它放在最后。 【参考方案1】:
dpower <- function(b, r, x = seq(from = 0.05, to = b, by = 0.001))
....

【讨论】:

好。无论如何在函数中检查函数调用时是否指定了 x 参数?返回 TRUE 或 FALSE 的东西? 是的,missing(x)。这将测试函数中的参数 (x) 是否在调用中指定。【参考方案2】:

您可以将 X 的值设置为 NULL 并将函数的第一行之一设为

 if(is.null(x))
     x <- seq(from = 0.05, to = b, by = 0.001)

【讨论】:

以上是关于在函数中设置默认值?的主要内容,如果未能解决你的问题,请参考以下文章

在构造函数中设置默认参数?语法[关闭]

在 Racket 中设置默认参数值

MVC3:在“仅代码”中设置默认值

如何在实体框架中设置默认值

Golang中设置函数默认参数的优雅实现

如何在 vue js 中设置输入表单控件默认聚焦,直到输入值?