观星者:保存到文件,不要在控制台中显示

问题描述 投票:8回答:3

当我想保存我的回归结果时

stargazer(regressions[[reg]], out=myFile, out.header=FALSE

stargazer还会将结果显示/打印到控制台中。当我迭代几十个结果时,这会破坏我的概述和日志。有没有办法明确告诉stargazer不仅要将输出保存到文件中,还要不另外打印它?

我在stargazer_5.1

r stargazer
3个回答
7
投票

您可以编写一个捕获stargazer输出的函数,并将其保存到文件中,而不向控制台输出任何内容。例如,从this SO answer调整代码:

mod_stargazer <- function(output.file, ...) {
  output <- capture.output(stargazer(...))
  cat(paste(output, collapse = "\n"), "\n", file=output.file, append=TRUE)
}

然后,运行该功能:

mod_stargazer(myfile, regressions[[reg]], header=FALSE)

append=TRUE导致所有表都保存到同一个文件中。如果您希望每个表都有单独的文件,请将其删除。


6
投票

考虑到eipi10的答案,你需要的唯一部分就是

bla <- capture.output(stargazer(..., out=output.file))

在stargazer中指定输出文件并以随机方式捕获输出,您只需删除或覆盖下一个表。无需定义新功能。


0
投票

解决问题的最简单方法是:

  1. 将stargazer的输出存储在没有输出文件的对象中,也不存储capture.output()

output <- stargazer(..., type="text")

这将输出存储为nx1矩阵,看起来不太好,所以你必须在第二步中转换它

  1. 将输出对象转换为漂亮的格式

2.a)与dplyr:

output %>% paste(., collapse = "\n") %>% cat("\n")

2.b)没有dplyr:

cat(paste(output, collapse = "\n"), "\n")

2.c)作为一个函数,如果你真的喜欢这个:

print_stargazer <- function(object) {
   cat(paste(object, collapse = "\n"), "\n")
}

然后像这样使用它:

output <- stargazer(..., type="text")
print_stargazer(object)
© www.soinside.com 2019 - 2024. All rights reserved.