我想使用lapply()
命令在向量上运行函数。这是我的尝试,可重复:
set.seed(10101)
# define parameters
N <- 1000
a <- 0.3
# create vector of variables
e <- rnorm(N)
l <- rchisq(N, df = 3, ncp = 0)
k <- rbeta(N, shape1 = 2, shape2 = 5, ncp = 0)
# vector over which to run function
g <- c(1, 0.5, 0.3, 0.1, -0.2, -0.5, -1)
# define function
CES <- function(g,a,e){
exp(e)*(a*l^g+(1-a)*k^g)^(1/g)
}
# result
y <- lapply(g,CES)
我收到错误
FUN(X [[i]],...)出错:缺少参数“e”,没有默认值
错误是什么?这是因为函数(l,k,e)的元素本身就是向量吗?
答案 0 :(得分:1)
你必须做
Form1
遵循错误的描述。函数y <- lapply(g, CES, a=a, e=e)
的参数a=
和e=
没有默认值 - 因此您必须将它们传递给函数。您可以使用函数CES()
的{{1}} - 参数来执行此操作
另外(参见@Cath的评论)你可以改变你的功能定义:
...
或(一个坏的变种):
lapply()