假设我有一个功能:fun1 <- function(x, fun2) { # do something }
其中x
是一个向量,fun2
是一个函数的名称。
如何测试函数中的fun2
名称?例如,如果fun2
是&#34;意思是&#34;,那么我想要返回一个向量,如果fun2
是&#34;摘要&#34;我想返回一个清单。
答案 0 :(得分:1)
使用match.arg
怎么样?
custom_function <- function(x) return(cat(sprintf("%05.4f\n", x)));
fun1 <- function(x, fun2 = c("mean", "summary", "custom_function")) {
fun2 <- match.arg(fun2);
if (fun2 == "mean") return(mean(x));
if (fun2 == "summary") return(summary(x));
if (fun2 == "custom_function") return(custom_function(x));
}
fun1(c(1,2,3), "mean");
[1] 2
fun1(c(1,2,3), "summary");
#Min. 1st Qu. Median Mean 3rd Qu. Max.
# 1.0 1.5 2.0 2.0 2.5 3.0
fun1(c(1,2,3), "custom");
#1.0000
# 2.0000
# 3.0000
arg.match
具有良好的属性,它也匹配部分参数。例如,fun1(c(1,2,3), "sum")
也会返回summary
。