【问题标题】:Output printed in R code block in org-mode when it shouldn't be不应该在 org 模式下以 R 代码块打印的输出
【发布时间】:2020-09-15 00:57:39
【问题描述】:

我刚刚升级到 org 9.3.6,现在我的 R 代码块没有按预期工作。比如我有这个简单的代码块,

#+BEGIN_SRC R :session
  mtcars1 <- mtcars
#+END_SRC

我不希望看到任何输出,因为我将 mtcars 保存为 mtcars1,因此 R 不应返回任何内容。但是,我看到了这个,

所以,它正在运行

print(mtcars1)

为什么?我不希望/不想看到任何输出,尤其是对于较大的数据帧,因为它会阻塞 emacs。

【问题讨论】:

    标签: r emacs org-mode ess


    【解决方案1】:

    看起来您在 org 源标头中使用了默认值 :results value。可以根据具体情况更改

    #+begin_src R :session :results output
    mtcars1 <- mtcars 
    #+end_src
    

    或者,更改您的 org(或 ess/R)初始化配置中的默认值

    (setq org-babel-default-header-args:R '((:results . "output")))
    

    【讨论】:

    • 谢谢,这行得通。您是否知道如何在代码块中获得多个输出?例如,如果head(mtcars$am)head(mtcars$carb) 都在同一个块中,如何显示它们的输出?现在,它只会显示head(mtcars$carb)。我猜这与:results 有关。你能告诉我你在网上哪里找到这个信息吗?
    • 参见组织手册:orgmode.org/manual/Results-of-Evaluation.html。要打印多个值,您可以执行cat(mtcars$am, mtcars$carb, sep='\n') 之类的操作,或者将值放入列表对象中
    • 实际上,对于多个输出,您应该可以输入head(mtcars@carb); head(mtcars$am)——这对我来说很好,因为标准输出刚刚被捕获,所以正常输出应该可以正常工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-17
    • 1970-01-01
    • 2013-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多