Предоставление POC-подобного ответа, который использует уродливую петлю и не самый красивый дизайн:
Загрузка например.пакет xlxs
для возможности записи в формате Excel 2007:
library(xlsx)
Давайте создадим рабочую книгу и лист (см. руководство!):
wb <- createWorkbook()
sheet <- createSheet(wb, "demo")
Определим некоторыестили, используемые в электронной таблице:
red <- createCellStyle(wb, fillBackgroundColor="tomato", fillForegroundColor="yellow", fillPattern="BIG_SPOTS")
yellow <- createCellStyle(wb, fillBackgroundColor="yellow", fillForegroundColor="tomato", fillPattern="BRICKS1")
И уродливый цикл, который вставляет каждую ячейку в электронную таблицу в соответствующем формате:
for (i in 1:nrow(pval)) {
rows <- createRow(sheet, rowIndex=i)
for (j in 1:ncol(pval)) {
cell.1 <- createCell(rows, colIndex=j)[[1,1]]
setCellValue(cell.1, gen[i,j])
if ((pval[i,j] < 0.3) | (pval[i,j] > 0.7)) {
setCellStyle(cell.1, red)
} else {
setCellStyle(cell.1, yellow)
}
}
}
Сохранение файла Excel:
saveWorkbook(wb, '/tmp/demo.xls')
Результат: demo.xls
Альтернативное решение с пакетом ascii
:
ascii.data.frame()
может экспортировать фреймы данных в кучуформаты с возможностью добавления некоторого форматирования.Например, экспортируя в pandoc , сначала определите стили каждой ячейки в массиве с такими же размерами, как pval
:
style <- matrix('d', dim(pval)[1], dim(pval)[2])
style[pval < 0.3 | pval > 0.7] <- 's'
Установите желаемый вывод:
options(asciiType = "pandoc")
И экспортируйте фрейм данных:
> ascii(gen, style=cbind('h', style))
**loc1** **loc2** **loc3**
--- ---------- ---------- ----------
1 Aa **aa** **aa**
2 **Aa** **aa** Aa
3 **aa** aa **aa**
4 **Aa** **AA** **aa**
--- ---------- ---------- ----------
С помощью ascii::Report
вы можете легко преобразовать его в pdf, odt или html.Просто попробуйте :) Небольшая демонстрация с HTML выводом: результат
r <- Report$new()
r$add(section("Demo"))
r$add(ascii(gen, style=cbind('h', style)))
options(asciiType = "pandoc")
r$backend <- "pandoc"
r$format <- "html"
r$create()
И odt вывод: результат
r$format <- "odt"
r$create()