Нет вывода из кода org-babel с использованием R
Org 8.2.10 Emacs 24.5.1 OSX 10.10.3
#+BEGIN_SRC R
1 + 2
#+END_SRC
#+RESULTS:
: 3
но с
#+BEGIN_SRC R
x <- rnorm(100)
summary(x)
#+END_SRC
#+RESULTS:
"Блок кода не выдан", а буфер *Messages* содержит:
Error reading results: (beginning-of-buffer)
Code block produced no output.
Я не уверен, почему я не вижу результатов из второго примера. Он работает найти в установке R на моей машине,
Я был бы очень благодарен за любую помощь.
1 ответ
Добавлять :results output
к строке заголовка, например
#+BEGIN_SRC R :results output
x <- rnorm(100)
summary(x)
#+END_SRC
#+RESULTS:
: Min. 1st Qu. Median Mean 3rd Qu. Max.
: -2.63500 -0.42370 0.02539 0.04136 0.48370 1.92000
Org может захватывать результаты из блоков кода двумя различными способами:
Следующие параметры являются взаимоисключающими и указывают, как следует собирать результаты из блока кода.
value
Это по умолчанию. Результатом является значение последнего оператора в блоке кода. Этот аргумент заголовка переводит оценку в функциональный режим. Обратите внимание, что в некоторых языках, например Python, использование этого типа результата требует, чтобыreturn
Оператор должен быть включен в тело блока исходного кода. Например,:results value
,
output
Результатом является сбор всего, что печатается в STDOUT во время выполнения блока кода. Этот аргумент заголовка переводит оценку в режим сценариев. Например,:results output
,
Поскольку ваш первый блок возвращает обычное значение, он работает без указания чего-либо для :results
, используя по умолчанию value
установка.
Ваш второй блок возвращает значение, которое должно быть явно напечатано:
Метод по умолчанию возвращает объект класса
c("summaryDefault", "table")
который имеет специализированный
R код, который возвращает значения со специализированным print
Методы должны быть обработаны специально в орг (выделено мое):
Если в блоке исходного кода используется R-графика на основе сетки, например, пакеты lattice и ggplot2, то необходимо позаботиться либо о print() графическом объекте, укажите
:results output
или запустите код в:session
, Это связано с тем, что графические функции из решеток и ggplot2 возвращают объекты, которые должны быть явно напечатаны, чтобы их увидеть, используя функцию печати. Это происходит автоматически при запуске в интерактивном режиме, например,:session
, но при вызове внутри другой функции это не так. Путь:results value
определяется для работы, вызовы устройства и функции ggplot2 заключены вmain
функции, и если объект специально не напечатан, вывод не производится.
Как уже упоминалось, явно print
и запустить код в :session
другие возможные решения.