向量上的函数不在R中工作

时间:2017-03-22 12:00:37

标签: r

我想使用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)的元素本身就是向量吗?

1 个答案:

答案 0 :(得分:1)

你必须做

Form1

遵循错误的描述。函数y <- lapply(g, CES, a=a, e=e) 的参数a=e=没有默认值 - 因此您必须将它们传递给函数。您可以使用函数CES()的{​​{1}} - 参数来执行此操作 另外(参见@Cath的评论)你可以改变你的功能定义:

...

或(一个坏的变种):

lapply()