2015-06-13 3 views
1

В настоящее время мой рабочий процесс заключается в том, что я делаю статистику и реструктуризацию данных в R и записываю свои документы с использованием Libre Office (LO) Writer. Результаты анализа в R часто являются таблицами, и мне нужно получить их в LO Writer. Я не нашел способ сделать это прямо в простой форме, поэтому то, что я обычно делаю, это: 1) собрать таблицу в R, 2) таблицу экспорта как .csv, 3) открыть .csv в LO Calc, 4) копировать из LO Calc в LO-записи, используя специальную вставку для RTF.Лучшие способы получить таблицы из R в либретто-офис Writer?

При сохранении в .csv, я делаю это, используя write.csv(table_1, "table_1.csv", na = ""). Это приводит к дополнительному шагу, потому что LO Calc должен знать, как читать CSV-файл. В качестве альтернативы можно получить install one of the packages для вывода в .ods или .xls (x).

Одна из проблем заключается в том, что это часто приводит к очень длинным десятичным числам в файле, например. 2.21931, тогда как обычно требуется только показать 2 или 3 цифры в документе. Я нашел два решения для этой досады.

Первый заключается в округлении чисел в R, используя, например, round(table_1, 2), а затем сохраните, используя указанную выше команду. Проблема заключается в том, что когда вы импортируете это в LO Calc, цифры, такие как .60, становятся .6, теряя (избыточную) цифру. Это приводит к несколько противоречивой презентации. Их можно добавить либо в таблицу документа, либо с помощью функций округления в LO Calc.

Во-вторых, использовать функцию округления в Libre Office Calc, но для этого требуется несколько дополнительных работ и больше работы.

Наконец, когда важные таблицы в LO Writer, как это, таблица будет иметь невидимые границы. Каждый из них должен будет добавить их вручную для каждой таблицы.

Каков наилучший способ получить таблицы результатов из R в LO Writer, избегая при этом значительных проблем с цифрами и дополнительных кликов?

+3

Возможно, некоторые ярлыки: я использую (на окнах) 'write.table (dat, 'clipboard', sep = '\ t', row.names = FALSE, header = TRUE)' и просто вставьте его в мою таблицу. Эта сторона - необходимость сохранения и импорта CSV. Что касается значимых цифр, попробовали ли вы что-то вроде 'dat [, num_columns] <- sapply (dat [, num_columns], format, digitits = 3)'? – r2evans

+0

Неплохая идея с буфером обмена. Я попробовал 'format()', но по какой-то причине он меняет тип на символ. Однако я не пробовал его в 'sapply()'. – Deleet

+0

Вы не можете гарантировать, что знаковые цифры будут отображаться после округления без преобразования в строку. В противном случае вам придется полагаться на Calc и/или Writer для обработки значительных цифр. – r2evans

ответ

2

Попробуйте сделать форматирование в R с функциями, такими как sprintf(). Это лучший способ найти отображение цифр. В приведенном ниже правиле имеются хорошие рабочие примеры.

http://www.cookbook-r.com/Strings/Creating_strings_from_variables/

Также рассмотрим knitr пакет для создания документов на лету.

1

Если вы хотите полностью автоматизировать создание документов LibreOffice, стандартный способ R - это записать документ с помощью knitr, а затем преобразовать полученный файл в формат ODT, используя Pandoc.

(Pandoc еще не поддерживает AsciiDoc как формат входного сигнала, поэтому вы ограничены написания документа в уценкой/LaTeX/HTML/текстиль/ReStructuredText.)