我想知道为什么,在运行我的下方时使用:bb(d = c(dnorm, dcauchy) )
我收到错误消息:object 'c(dnorm, dcauchy)' not found
?
P.S。但正如我在下面所示,该功能对bb(d = c(dnorm))
没有任何问题。
bb <- function(d){
d <- if(is.character(d)) d else deparse(substitute(d))
h <- numeric(length(d))
for(i in 1:length(d)){
h[i] <- get(d[i])(1) ## is there something about `get` that I'm missing?
}
h
}
# Two Examples of Use:
bb(d = dnorm) # Works OK
bb(d = c(dnorm, dcauchy) ) # Error: object 'c(dnorm, dcauchy)' not found
# But if you run:
bb(d = c("dnorm", "dcauchy"))# Works OK
答案 0 :(得分:2)
尝试将此功能直接传递给您的功能
bb <- function(d){
if (!is.list(d)) d <- list(d)
sapply(d, function(x) x(1))
}
bb(d = list(dnorm, dcauchy))
bb(d = dnorm)
c()
函数用于组合向量,它不是魔术&#34;数组&#34;功能或任何东西。如果你有简单原子类型的集合,你可以用c()
加入它们,但对于像函数这样的更复杂的对象,你需要在列表中收集它们,而不是向量。