我创建了以下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)
})
然而我真正想要的是这个序列:
我也试过了一个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)
}
我做错了什么?我怎样才能实现我想要的?谁可以为这篇文章提出更好的头衔?
答案 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))
}))