3

假设Z是特征名称的向量。

如何让以下 Rscript 中的摘要命令实际打印?

for (var in Z)                
{                             
#cat(i)                       
form = paste('crim ~', var)   
lm.fit=lm(form, data=Boston)  
summary(lm.fit)               
}                             

如果我summary(lm.fit)在 R 提示符下键入,它可以工作,但是当我获取包含此循环的 Rscript 时,我没有得到任何输出。我已经尝试过解决方案如何在不抑制输出的情况下运行“R”脚本?但它不会导致摘要打印。

4

2 回答 2

4

summary()"summary.foo"假设调用了该summary.foo()方法,应该返回一个类的对象。然后print()该类的方法print.summary.foo()应该打印由返回的对象summary.foo()

自动打印在循环中关闭for ()(以及其他一些情况。您需要显式调用print()。当您summary(bar)在提示符处调用时,您实际上是在执行print(summary(bar))。这是在循环print()中被抑制的调用的添加。for ()

因此,写

print(summary(lm.fit))

在你的循环中,你会看到输出。

于 2013-10-09T18:35:09.677 回答
1

您可以摆脱for loop使用lapply.

z<-as.list(c("disp","cyl"))
nn<-lapply(z,function(x) summary(lm(as.formula(paste("mpg",x,sep="~")),data=mtcars)))
print(nn) # or show(nn)

如果你想坚持for loop这里是解决方案:

for (i in z){

    k[[i]]<-summary(lm(as.formula(paste("mpg",z[i],sep="~")),data=mtcars))
    print(k[[i]])
}
于 2013-10-09T18:53:06.000 回答