如果在循环中调用summary()命令的输出,我怎么能得到它?

时间:2013-10-09 18:21:51

标签: r

假设Z是要素名称的向量。

如何在以下Rscript中获取summary命令才能实际打印?

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

如果我在R提示符下键入summary(lm.fit),它可以工作,但是当我获取包含此循环的Rscript时,我没有输出。我已经尝试过解决方案How can I run an 'R' script without suppressing output?,但它不会导致打印摘要。

2 个答案:

答案 0 :(得分:1)

假设summary()方法被调用,

"summary.foo"应该返回类summary.foo()的对象。然后,该类的print()方法print.summary.foo()应该打印summary.foo()返回的对象。

for ()循环中关闭自动打印(以及其他一些情况。您需要显式调用print()。当您在提示时调用summary(bar)时,您实际上正在{ {1}}。在print(summary(bar))次循环中添加了print()调用。

因此,写

for ()
在循环中

,你会看到输出。

答案 1 :(得分: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]])
}