【发布时间】:2012-05-12 02:55:07
【问题描述】:
我正在寻找如何检查函数中定义的参数的一般做法。 我提出了这三个想法。哪一种是正确的做法?
不幸的是,第三个不起作用。替代()在函数中的工作方式不同,我无法弄清楚如何正确使用它。
file.names <- list(
cov.value <- "cov.rds",
plot.name <- "plot.pdf"
)
test1 <- function(file.names){
is.save <- !missing(file.names)
}
test2 <- function(file.names = NULL) {
is.save <- !is.null(file.names)
}
test3 <- function(file.names = NULL) {
is.save <- exists(as.character(substitute(file.names)))
}
【问题讨论】:
-
我已经看到前两个在很多地方都使用过。我不建议您进行第三次尝试。
-
您可能想查看this question 的答案。我偏爱this answer。
-
@BenBarnes,感谢您的链接。链接中的答案是用这个问题来测试参数是否在 ... 参数中定义。
-
@microbe,感谢您查看链接。
match.call()会让您知道是否定义了任何参数(两个正式参数 - 在您的示例中为file.names- 以及提供给...的参数)。
标签: r function parameter-passing