Имеется два способа создания документа word в R. Либо с помощью Knitr и pandoc, либо с помощью R2DOCX.
Pandoc: конвертирование документов Markdown в другие форматы.
Кликните здесь, для получения дополнительной информации.
Функция pandoc() включена в пакет knitr (версия 1.2) и может использоваться для преобразования документов Markdown в другие форматы, такие как Latex/PDF, HTML и Word (. Doc,. Docx).
Как использовать pandoc():
Код R:
library(knitr) pandoc('foo.md', format='html') # HTML pandoc('foo.md', format='latex') # LaTeX/PDF pandoc('foo.md', format='docx') # MS Word pandoc('foo.md', format='odt') # OpenDocument
Создание документа Word с помощью R2DOCX
Используя пакет R2DOCX, вы можете легко создать документ Word из шаблона и добавить график или таблицу в документ.
Полная документация доступна здесь.
Пример показан здесь.
Установка (для версий R >= 3.0)
Код R :
install.packages("devtools") devtools::install_github('R2DOC', 'davidgohel') devtools::install_github('R2DOCX', 'davidgohel')
Для пользователей Mac:
Sys.setenv(NOAWT=1) #prevents usage of awt.[http://cran.r-project.org/doc/manuals/r-devel/R-admin.html#Java-_0028OS-X_0029] install.packages("devtools") devtools::install_github('R2DOC', 'davidgohel') devtools::install_github('R2DOCX', 'davidgohel')
Доступные функции:
addPlot для добавления графиков.
addParagraph для добавления абзацев текста.
addTable для добавления таблиц.
addHeader для добавления заголовков.
addTOC для добавления оглавления.
addPageBreak для добавления разрывов страниц.
addLineBreak для добавления разрывов строк.
replaceText для замены текста.
Ваш первый документ:
Sys.setenv(NOAWT=1) #предотвращает использование awt - требуется на Mac
library(R2DOCX)
# Создаваемый файл
docx.file <- span=""> "document.docx"
# Объект Docx для работы
doc ->= new ("Docx", title = "My example" )
#Добавление таблицы
doc = addTable( doc, iris[1:10,] )
# Добавление текста
doc = addParagraph( doc, value = "Hello World!", stylename = "Normal" )
# Добавление графика
doc = addPlot( doc, function() plot( rnorm(10), rnorm(10) )
, width = 10, height = 8
)
# Запись файла
writeDoc( doc, docx.file )
Создание документа Word из шаблона
# Создаваемый документ docx.file = "document.docx" # Документ Word, используемый в качестве шаблона template.file = file.path( find.package("R2DOCX"), "templates/TEMPLATE_01.docx", fsep = "/" ) # Создание объекта doc = new("Docx" , title = "My example" , basefile = template.file ) # 2 ключевых слова в документе - заменим их doc = replaceText( doc, pattern = "AUTHOR", replacement = "John Doe" ) doc = replaceText( doc, pattern = "DATE", replacement = date() )
Главный заголовок
#Главный заголовок #************************************** doc = addParagraph( doc, value = "Exemple", stylename = "TitleDoc" ) doc = addPageBreak( doc ) #saut de page
Оглавление
#Таблица содержимого: TOC #************************************** #(у пользователя запрашивают обновления TOC при первом открытии документа) doc = addHeader(doc, "Table des matières", 1); doc = addTOC(doc) doc = addPageBreak( doc )#saut de page
Добавление текста (обычного и списка)
# Добавление текста (обычного и списка) #************************************** doc = addHeader(doc, "Dataset presentation", 1); #Обычный текст doc = addParagraph( doc, value = "Dataset 'measured.weights' is set of weights measurements collected on few people before savate training.", stylename = "Normal" ) #Ненумерованный список texts = c( "Column 'gender' is the subject gender." , "Column 'id' is the unique subject identifier." , "Column 'cat' is the subject weight category." , "Column 'competitor' tells wether or not subject practice competition." , "Column 'day' is the day of measurement." , "Column 'weight' is the measured weight." ) doc = addParagraph( doc, value = texts, stylename = "BulletList" )
Условное форматирование текста
Функция addParagraph используется для простого добавления текста, как показано выше. Ее также можно использовать для замены текста и условного форматирования в документе.
# шаблон текста x = "[animal] eats [food]." # определяем свойства форматирования для замены текста – см. раздел "стили" textProp = textProperties( color = "blue" ) replacement.styles = list( animal= textProp, food= textProp ) # определяем замену текста replacements = list( animal = "donkey", food = "grass" ) doc = addParagraph( doc, value = x, stylename = "Normal" , replacements = replacements , replacement.styles = replacement.styles )
Функция textProperties
textProperties(color = "black", font.size = 10 , font.weight = "normal", font.style = "normal" , font.family = "Arial" )
color: font color; font.size: size in pixel; font.weight : "normal" ou "bold"; font.style: "normal" ou "italic"; font.family: font family.
Добавление таблицы
Простая таблица:
# Добавление таблицы #************************************** # Используемые данные data( measured.weights ) doc = addHeader(doc, "Dataset", 1); doc = addHeader(doc, "Dataset first lines", 2); #Простая таблица doc = addTable( doc , data = head( measured.weights, n = 10 ) , formats = get.light.formats() ) doc = addLineBreak( doc )#Line break
Переименовывание заголовков таблицы:
Перед переименовыванием:
doc = addTable( doc, data = weights.summary)
После переименовывания:
doc = addTable( doc , data = weights.summary , header.labels = list("id" = "Subject Identifier", "avg.weight" = "Average Weight" , "regularity" = "Regularity", "visit.n" = "Number of visits", "last.day" = "Last visit" ) # Названия столбцов )
Простая таблица, настроенная с помощью объединенных строк:
В приведенной ниже таблице объединены строки в столбце «day». Столбец «gender» окрашен по полу.
# Простая addTable с объединением строк в столбце 'day' doc = addHeader(doc, "Dataset last lines", 2); sampledata = tail( measured.weights[ order(measured.weights$day), ], n = 20 ) doc = addTable( doc , data = sampledata , span.columns = c("day") , col.colors = list( "gender" = ifelse( sampledata$gender == "male" , "#00c2ff", "#ffcdd1") ) )
Настраиваемая таблица со сгруппированными заголовками:
В этой таблице заголовки были переименованы, созданы сгруппированные заголовки, указан тип столбцов (%, целое, символ, десятичное число, дата). Значения столбца «Regularity» были раскрашены в соответствии со значением (серый, если <0> = 0,5).0>
# настраиваемая таблица doc = addHeader(doc, "Dataset summary", 1); doc = addTable( doc , data = weights.summary , header.labels = list("id" = "Subject Identifier", "avg.weight" = "Average Weight" , "regularity" = "Regularity", "visit.n" = "Number of visits", "last.day" = "Last visit" ) # заголовки столбцов , grouped.cols=list( "id" = "id" , "Summary" = c( "avg.weight", "regularity", "visit.n", "last.day" ) ) # строка сгруппированных заголовков, добавляемая перед строкой заголовков , col.types = list( "id" = "character", "avg.weight" = "double" , "regularity" = "percent", "visit.n" = "integer" , "last.day" = "date" ) # типы каждого столбца , col.fontcolors = list( "regularity" = ifelse( weights.summary$regularity < 0.5 , "gray", "blue") ) # настраиваемые цвета шрифта для столбца "regularity" )
Добавление графика
# Добавление графика #************************************** doc = addPageBreak( doc ) doc = addHeader(doc, "Graphics", 1); doc = addPlot( doc, function() boxplot(measured.weights$weight ~ measured.weights$id, xlab = "Subjects", ylab = "Weights" , col = "#0088cc", legend = "My boxplot"), width=7, height=7 )
Замена текста
Чтобы заменить ключевое слово «AUTHOR» в документе на «Pearson»:
doc = replaceText( doc, "AUTHOR", "Pearson")
Стили заголовков, доступные в вашем документе
doc = new("Docx", title = "My example" ) styles( doc ) # [1] "Normal" "Titre1" "Titre2" # [4] "Titre3" "Titre4" "Titre5" # [7] "Titre6" "Titre7" "Titre8" #[10] "Titre9" "Policepardfaut" "TableauNormal" # ... doc = setHeaderStyle(doc, stylenames = c("Titre1", "Titre2", "Titre3", "Titre4", "Titre5", "Titre6", "Titre7", "Titre8", "Titre9" ) ) doc = addHeader( doc, "title 1", 1 )
Полный скрипт, использованный для создания этого документа Word, можно скачать здесь: R2DOCX.r
Оригинал: R2DOCX : Create a word document with R
Комментариев нет:
Отправить комментарий