экспорт таблицы из R

Sep 30 2020

Я пытаюсь экспортировать таблицу из блока кода R и прочитал Результаты оценки (Руководство организации), в которых говорится, что таблицы могут выводиться с параметрами заголовка :exports results :results value table.

Чтобы получить таблицу в правильном формате, я использую toOrgфункцию пакета R из orgutils .

К сожалению, этот простой пример не работает ...

#+STARTUP: align
#+TITLE: Test
#+AUTHOR: Me
#+PROPERTY: header-args:R :session *org-R*
#+PROPERTY: header-args:R :cache yes
#+PROPERTY: header-args:R :results graphics
#+PROPERTY: header-args:R :width 1024
#+PROPERTY: header-args:R :height 768
#+PROPERTY: header-args:R :tangle yes


#+begin_src R :session *org-R* :eval yes :exports none :results output silent
  library(orgutils)
  library(tidyverse)
#+end_src


#+begin_src R :session *org-R* :eval yes :exports both :results value table
  employee <- c('John Doe','Peter Gynn','Jolie Hope')
  salary <- c(21000, 23400, 26800)
  startdate <- as.Date(c('2010-11-1','2008-3-25','2007-3-14'))
  employ.data <- data.frame(employee, salary, startdate)
  employ.data %>%
    toOrg()
#+end_src

Компилируя в HTML, я получаю только код, таблица не отображается в самом буфере Org (цифры отображаются в строке), а в итоговом HTML-коде нет таблицы.

Если я выполню только код R в сеансе R, он распечатает ...

> employee <- c('John Doe','Peter Gynn','Jolie Hope')
> salary <- c(21000, 23400, 26800)
> startdate <- as.Date(c('2010-11-1','2008-3-25','2007-3-14'))
> employ.data <- data.frame(employee, salary, startdate)
>  employ.data %>%
    toOrg()
| employee   | salary | startdate  |
|------------+--------+------------|
| John Doe   |  21000 | 2010-11-01 |
| Peter Gynn |  23400 | 2008-03-25 |
| Jolie Hope |  26800 | 2007-03-14 |

На самом деле не вижу, что я здесь делаю не так, и любые указатели будут с благодарностью получены.

Ответы

2 Philopolis Sep 30 2020 at 14:35

Во-первых, два замечания: ваш пример не является полностью воспроизводимым (вы не импортируете удобную библиотеку R для %>%оператора, а в заголовке вашего второго блока src есть опечатка). Я не знаю, все ли это объясняет, но это может частично объяснить вашу проблему.

Не уверен, зачем вам нужен внешний пакет R для такого простого примера. При использовании стандартного подхода к организационному режиму это просто работает:

#+begin_src R :session *org-R* :exports both :results value table :colnames yes
  employee <- c('John Doe','Peter Gynn','Jolie Hope')
  salary <- c(21000, 23400, 26800)
  startdate <- as.Date(c('2010-11-1','2008-3-25','2007-3-14'))
  employ.data <- data.frame(employee, salary, startdate)
  employ.data
#+end_src

В противном случае, если вы действительно хотите использовать этот пакет, тип результата не должен быть value; это должно быть raw outputвместо этого. Следующий блок src полностью эквивалентен предыдущему:

#+begin_src R :session *org-R* :exports both :results output raw :colnames yes
  employee <- c('John Doe','Peter Gynn','Jolie Hope')
  salary <- c(21000, 23400, 26800)
  startdate <- as.Date(c('2010-11-1','2008-3-25','2007-3-14'))
  employ.data <- data.frame(employee, salary, startdate)
  toOrg(employ.data)
#+end_src