Як ефективно вставити таблицю з R у документ Word?


3

Я створюю документ Word (.docx) за допомогою LibreOffice. Мені потрібно включити деякі числові результати, які я обчислював у Р. Вони виглядають як проста таблиця чисел з текстовими підписами для рядків і стовпців, а також декількома НС тут і там (рядок, що представляє константу "відсутнє значення" R).

Я спробував зберегти таблицю на диск у форматі .csv, відкривши її в LibreOffice Calc та скопіювавши її в програму Writer. Він вставлений як OLE-об'єкт. У цьому є кілька проблем. По-перше, це означає, що документ великий і повільний для відкриття. По-друге, я боюся проблем сумісності (я не вірю, що об'єкт OLE спрацює нормально, коли хтось інший читатиме цю річ з Word замість LibreOffice). По-третє, він форматує цифри в таблиці у вигляді чисел (скориговані праворуч), але значення NA у вигляді тексту (з лівою коригуванням), а також усі числа у рядку, що містить НА як текст. Тому читати це дуже важко, оскільки стовпці не вирівнюються.

Я знаю, що міг би створити таблицю в LibreOffice і скопіювати туди номери. Але чи є швидше рішення, можливо, якийсь додаток Word, який автоматично створює таблиці з .csv, або, можливо, спосіб зберегти вихід R у вигляді таблиці HTML (вони автоматично форматуються під час вставки в LibreOffice)? Мені не потрібні вигадливі погляди до тих пір, поки все вибудовується і створюється рідна таблиця Word.

Відповіді:


1

Ви можете просто відкрити .csv у LibreOffice (Writer), вибрати все та натиснути на майстер таблиці речей:

введіть тут опис зображення

У моєму випадку це призвело до:

введіть тут опис зображення


Що стосується HTML-способу, наступний сценарій PERL зробить все, що вам потрібно (я припускаю, що ви перебуваєте в Linux і має розділений пробіл .csv-файл):

#!/usr/bin/perl -w
print <<EOF;
<html>
<head>
<style>
TABLE{
border-collapse:collapse;

}
TD{
border:1px solid black;
padding:3px;
text-align:left;
}
</style>
</head>
<body>
<table>

EOF
while(<>){
    chomp; 
    print "<tr>";
    my @a=split(/\s+/); 
    print "<td>$_</td>" foreach (@a);
    print "</tr>\n";
}
print "</table></body></html>\n";

Збережіть скрипт як csv2html.pl і запустіть його так:

$ perl csv2html.pl input.csv > output.html

Перша версія для мене взагалі не працює (LibreOffice 3.5.6.2). По-перше, я не можу відкрити .csv файл у програмі Writer; коли я вибираю Відкрити у вікні Writer, воно відкриється у вікні Calc. Коли я вставляю вміст у новий документ Writer у вигляді тексту, майстер створює таблицю з одного рядка на csv рядок, але весь вміст цього рядка розміщує в одній клітині. Я припускаю, що це тому, що мій .csv використовується ;як роздільники. На щастя, ваш сценарій Perl прекрасно спрацював, як тільки я виправив роздільник у регулярному виразі. Дуже дякую! Схоже, мені потрібно вивчити мову сценаріїв.
румчо

@rumtscho, yup, сценарії корисні :). Однак ви можете це зробити у вільному доступі. Просто змініть або видаліть .csvрозширення зі свого файла. Спробуйте .txtабо просто без розширення (розширення необов’язкові в Linux). Тоді LibreOffice відкриє файл у програмі Writer, і ви можете скористатися майстром таблиці.
тердон

Щоб було зрозуміло: я потрапив у лібріофіс, але Майстер таблиці не працював, не визнаючи мої крапки з комою як роздільники. Я думаю, я міг би написати сценарій, який спочатку змінює всі крапки з комою на пробіл (я, мабуть, знаю достатню кількість баш для цього, хоч і немає збитків), але враховуючи, що сценарій може створити саму таблицю (як ви вже показали), це повністю порушує мою ідею ефективності. Все-таки, дякую, що показали мені обидва варіанти, це була цінна інформація, яку я, можливо, можу використати інший час.
румчо

2

Виявилося, що LibreOffice також має функцію Paste Special (duh). Це дозволяє мені вибрати "форматований текст" або "HTML" замість "calc8" під час вставки таблиці, скопійованої з Calc. Я все ще віддаю перевагу рішенню сценарію, оскільки Paste Special використовує форматування, присутнє в Calc, де рядки з NA вирівнюються ліворуч, а рядки з цифрами вирівнюються праворуч.


Ця відповідь мені дуже допомогла. Мені б не хотілося вибирати "HTML" для даних CSV / таблиці.
dsh
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.