矢量化&x27;德帕斯(替代品(d))和#x27;在R?
我想知道为什么在使用以下命令运行我的程序时:矢量化&x27;德帕斯(替代品(d))和#x27;在R?,r,function,R,Function,我想知道为什么在使用以下命令运行我的程序时:bb(d=c(dnorm,dcauchy))我会收到一个错误,说:object'c(dnorm,dcauchy)'notfound p.S.但正如我在下面所示,该函数与bb(d=c(dnorm))没有问题 bb尝试将函数直接传递给函数的方法 bb <- function(d){ if (!is.list(d)) d <- list(d) sapply(d, function(x) x(1)) } bb(d = list(dno
bb(d=c(dnorm,dcauchy))
我会收到一个错误,说:object'c(dnorm,dcauchy)'notfound
p.S.但正如我在下面所示,该函数与bb(d=c(dnorm))
没有问题
bb尝试将函数直接传递给函数的方法
bb <- function(d){
if (!is.list(d)) d <- list(d)
sapply(d, function(x) x(1))
}
bb(d = list(dnorm, dcauchy))
bb(d = dnorm)
bb尝试将函数直接传递给函数的方法
bb <- function(d){
if (!is.list(d)) d <- list(d)
sapply(d, function(x) x(1))
}
bb(d = list(dnorm, dcauchy))
bb(d = dnorm)
bb当您将其解压时,您会得到“c(dnorm,dcauchy)”
,因为get()
需要变量名。不能将其与函数一起使用。例如,get(“x”)
会返回x
的值,但是get(“c(x)”
不会“调用”c()
函数。它适用于名称,而不是表达式。出于这样的原因,通常最好避免get()
。也许您正在做的事情中有一部分被忽略了,但我不明白为什么您不能将函数本身(或函数列表)作为参数传递,并跳过所有的deparsing/get内容。@joran,所以在我编辑的代码中,现在bb(d=c(“dnorm”,“dcauchy”))
运行正常@rnorouzian这一切都取决于传递多个函数时希望行为(输出)是什么。似乎传递函数列表更容易。在那种情况下,根本不需要脱裤子bb(d=list(dnorm,dcauchy))
当您将其解压时,您会得到“c(dnorm,dcauchy)”
,字面意思是。因为get()
需要变量的名称。不能将其与函数一起使用。例如,get(“x”)
会返回x
的值,但是get(“c(x)”
不会“调用”c()
函数。它适用于名称,而不是表达式。出于这样的原因,通常最好避免get()
。也许您正在做的事情中有一部分被忽略了,但我不明白为什么您不能将函数本身(或函数列表)作为参数传递,并跳过所有的deparsing/get内容。@joran,所以在我编辑的代码中,现在bb(d=c(“dnorm”,“dcauchy”))
运行正常@rnorouzian这一切都取决于传递多个函数时希望行为(输出)是什么。似乎传递函数列表更容易。在那种情况下,根本不需要脱裤子<代码>bb(d=列表(dnorm,dcauchy))