Na.action = 排除 lapply 中的错误

Na.action = exclude error in lapply

我有一个包含 507 列的数据框。第一列是观察日期。第 2 列到第 504 列是我的因变量。 505、506 和 507 列是自变量。我写了一个函数来对每个因变量进行单独的回归:

varlist<-names(df)[2:504]


models <- lapply(varlist, function(x) {
  lm(substitute(i ~ rmrf + smb + hml, na.action = na.exclude, list(i = as.name(x))), data = df)
})

na.exclude 参数给我以下错误代码:

 Error in substitute(i ~ rmrf + smb + hml, na.action = na.exclude, list(i = as.name(x))) : unused argument (na.action = na.exclude) 

但是,当我 运行 每个单独进行时,回归有效。

lm(Var2 ~ rmrf + smb + hml, na.action = na.exclude, data = df)

当我在 lapply 函数中包含 na.action 参数时,可能导致错误的原因是什么?

您的参数顺序错误。要更好地查看问题,请尝试像这样分隔代码:

varlist<-names(df)[2:504]

models <- lapply(varlist, function(x) {
  lm(
    substitute(i ~ rmrf + smb + hml, 
       na.action = na.exclude, 
       list(i = as.name(x))
    ), 
       data = df)
})

请注意示例中的工作原理

lm(Var2 ~ rmrf + smb + hml, na.action = na.exclude, data = df)

na.action 参数在 lm 函数中?在不起作用的示例中,它位于替代函数