R 单个输入参数的可变条目数
我正在尝试编写一个函数,它可以调用不同的分布函数,具体取决于用户作为输入提供的内容。下面的示例不是我现在正在编写的代码,而是一个简单、可复制的示例:R 单个输入参数的可变条目数,r,R,我正在尝试编写一个函数,它可以调用不同的分布函数,具体取决于用户作为输入提供的内容。下面的示例不是我现在正在编写的代码,而是一个简单、可复制的示例: fun <- function(dist, params){ rdist <- get(paste("r", dist, sep=""), mode="function") return(rdist(n = 1, params)) } 工作原理是: fun2 <- function(dist, params){ rd
fun <- function(dist, params){
rdist <- get(paste("r", dist, sep=""), mode="function")
return(rdist(n = 1, params))
}
工作原理是:
fun2 <- function(dist, params){
rdist <- get(paste("r", dist, sep=""), mode="function")
return(rdist(n = 1, params[1], params[2]))
}
> fun2("norm", c(mean=1, sd=0))
[1] 1
fun2您正在寻找:
do.call("rnorm", list(n=1,mean=1, sd=0))
您可以将其包装到函数中:
fun_dist <- function(dist="norm",...){
rdist <- paste("r", dist, sep="")
do.call(rdist, list(n=1,...))
}
编辑
Op正在寻找一种解决方案,它将参数分组在一个参数params中
fun_dist <- function(dist="norm",params){
rdist <- paste("r", dist, sep="")
do.call(rdist, as.list(c(n=1,params)))
}
fun_dist('norm',c(mean=1, sd=0))
fun\u distswitch
是否可以接受?你必须为每个分布写一行,但是你有很大的能力来传递参数(例如,正态分布和威布尔分布使用不同的参数名称)。很抱歉,我不接受你的答案,但我认为这对我来说是行不通的。我正在优化一个函数的参数,为此我显式地需要params输入。我正在寻找的一个解决方案将允许我获取参数向量c(mean=1,sd=0),并找到某种“unc'ing”方法,然后将每个元素输入函数。很抱歉,如果我在最初的问题中不清楚这一点。我找到了一个基于您的答案的解决方案,它产生了想要的结果:fun
fun_dist(mean=1, sd=0)
[1] 1
fun_dist('norm',mean=1, sd=0)
[1] 1
fun_dist <- function(dist="norm",params){
rdist <- paste("r", dist, sep="")
do.call(rdist, as.list(c(n=1,params)))
}
fun_dist('norm',c(mean=1, sd=0))