【问题标题】:How do I get all the output from script I am running in RStudio如何从我在 RStudio 中运行的脚本中获取所有输出
【发布时间】:2011-07-31 02:32:02
【问题描述】:

我想查看一个有 149 行的脚本的输出。在整个脚本中,有一些我想查看的表格。我正在使用 RStudio IDE。过去我使用过 Tinn-R。我将运行整个脚本,代码行和打印的对象将在控制台中可见。

例如,这里有一段摘录

attach(uniquehuman.race.eth)
partA.eth <-table(Ethnicity, Sex,useNA="ifany")
partA.eth
margin.table(partA.eth,1)#row totals
margin.table(partA.eth,2)#column totals
nrow(uniquehuman.race.eth)#total logged in

上面的代码会给出表格的文本输出和我需要的数字。然后我可以保存控制台或将整个内容复制并粘贴到文本文件中。

如何在 RStudio 中做到这一点?我最接近它的是在每一行上按 CTRL-ENTER,但我不想这样做 149 次。如果我按 CTRL-SHIFT-ENTER 进行“全部运行”,则 R 会处理所有数据并将对象放入内存,但我看不到输出。

请告诉我如何查看所有输出和/或将输出发送到文本文件。

【问题讨论】:

    标签: r text rstudio


    【解决方案1】:

    我是 RStudio 开发人员之一。感谢您的反馈——我会记录一个错误。

    与此同时,一种解决方法是从控制台执行source(filename, echo=T)

    【讨论】:

    • 耶。那行得通。这就是我想要的。然后我可以复制并粘贴控制台,或者我可以输入 sink("filenameIwantforoutput.txt") 然后运行您的命令,然后再次输入 sink() 以停止转移。非常感谢
    • bug 的状态是什么?它在 RStudio 0.97.173 中解决了吗?谢谢。
    • RStudio 开发者请注意,此错误仍未修复;我正在使用版本 0.98.493 并且仍然需要使用 'echo=T' 下面的评论是指 RStudio 笔记本。这是图标!enter image description here
    • RStudio 现在在脚本面板的右上角有一个功能。它看起来是一个蹲笔记本。 “从当前 R 脚本编译和 HTML 笔记本”似乎可以完成这项工作。试试看,告诉我它是否有效。
    • 如果您的意思是...单击小的“电子表格”图标...不,它不起作用,只显示 100 个变量。我现在的解决方法是发送到 Excel 电子表格。
    【解决方案2】:

    您只需选择要运行的代码,然后按CTRL+ENTER 即可在 RStudio 中执行您想要的操作。这适用于多行,就像在 Tinn-R 中一样。如果您想以详细的方式一次运行所有内容,请按CTRL-A CTRL-ENTER

    作为另一种保存到文本文件的选项,您可以查看?sink

    sink(file='path/to/somefile.ext')
    ... # the code generating output
    sink()
    

    sink() 将控制台的所有输出重定向到一个连接,在这种情况下是某个文件。请注意,这只是标准输出,而不是警告或错误。此命令还可以方便地在分析中创建输出文件,与print()cat()sprintf() 等结合使用。

    如果您在 RStudio 中使用“全部运行”,则必须显式使用上述任何函数来生成文件的输出。原则上,如果您运行整个脚本,RStudio 会静默运行。

    【讨论】:

    • 我试过 sink("numbersforeliz.txt") 但它所做的只是给我最后几行输出。它没有给我全部的输出。如果我使用 run all,这与我在控制台中看到的输出相同。但是如果我按 ctrl-enter(运行行)149 次,我会看到更多。
    • @Farrel :您可能需要明确打印所需的数字。因此我提到了 cat()、sprintf() 等等。打印到控制台的sink(file=...)sink() 之间的所有内容通常都重定向到指定的文件。
    • @Farrel : 用 RStudio 中的常规方式编辑答案。
    • 我希望 RStudio 大声或冗长地运行。我希望在控制台中重现每一行代码,并且我希望在其下方打印任何结果输出。因此,如果有一行代码“nrow(uniquehuman.race.eth)#total logged in”,那么我会在输出中看到它,我会在下一行看到一个整数。通过告诉我有关 print() 的信息,我认识到您所指的良好做法,但是要返回并编辑我拥有的每个脚本就太过分了。
    • @Farrel : 选择你想运行的代码(多行可能!)然后按 CTRL+ENTER 确实运行很冗长。尚不存在详细运行所有选项的选项。去找 RStudio 的人,让他们添加这个功能,很多人会喜欢的。但现在我给了你所有当前可用的选项。
    【解决方案3】:

    使用 options(verbose=TRUE) 在整个脚本或会话中详细打印所有输出。

    【讨论】:

    • 如果您不关心查看表格和其他对象,而只是对警告、错误和标准输出感兴趣,则此方法非常有效。但它没有回答 OP 的问题
    猜你喜欢
    • 2020-05-16
    • 1970-01-01
    • 2014-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    • 2018-12-08
    相关资源
    最近更新 更多