R误解了lapply计算/输出序列?

时间:2017-04-28 06:52:51

标签: r for-loop lapply

我创建了以下lapply命令,用于从因变量列表中计算多个回归模型。

lapply(1:length(regressionVars$motivation_on), function(x) {
   print("printing regression model for DV: " %p%  regressionVars$motivation_on[x])
   OLS_ONM_motivation_X <- lm(regressionVars$motivation_on[x] %p% " ~ " %p% "age + gender" %p% " + " %p% paste(c(regressionVars$pvq), sep = "", collapse = " + "), comb)
   summary(OLS_ONM_motivation_X)
})

我渲染R文件时得到的输出如下所示: enter image description here

然而我真正想要的是这个序列:

  • 打印(headline1)
  • 摘要(lm1)
  • 打印(headline2)
  • 摘要(headline2)
  • 等......

我也试过了一个for循环,但它只打印了#34;标题&#34; 21次并且不计算线性模型...

for (x in 1:length(regressionVars$motivation_on)) {
   print("printing regression model for DV: " %p%  regressionVars$motivation_on[x])
   OLS_ONM_motivation_X <- lm(regressionVars$motivation_on[x] %p% " ~ " %p% "age + gender" %p% " + " %p% paste(c(regressionVars$pvq), sep = "", collapse = " + "), comb)
   summary(OLS_ONM_motivation_X)
}

我做错了什么?我怎样才能实现我想要的?谁可以为这篇文章提出更好的头衔?

1 个答案:

答案 0 :(得分:1)

如果最后一行评估某个对象,则R函数会隐式返回。因此,从函数返回摘要而不是打印。我相信你可以做到

print(summary(x))

取而代之的是获得所需的结果,否则进行打印并将返回(TRUE)添加到下一行或某些内容以避开R的自动返回捕获。

尝试

invisible(lapply(1:length(regressionVars$motivation_on), function(x) {
   print("printing regression model for DV: " %p%  regressionVars$motivation_on[x])
   OLS_ONM_motivation_X <- lm(regressionVars$motivation_on[x] %p% " ~ " %p% "age + gender" %p% " + " %p% paste(c(regressionVars$pvq), sep = "", collapse = " + "), comb)
   print(summary(OLS_ONM_motivation_X))
}))