сохранение названий размерностей

В R у матрицы могут быть названия размерностей, что удобно для вывода одномерных и многомерных таблиц сопряженности, поскольку позволяет понять, какие именно переменные образуют таблицу. При выводе такой таблицы на экран мы увидим соответствующие надписи, а вот при сохранении на лист экселевского файла эта информация не выводится. Попробовал немного изменить функцию из пакета xlsx, сохраняющую матрицы и таблицы:

require(xlsx)

write_xlsx <- function (x, file, sheetName = "Sheet1", col.names = TRUE, row.names = TRUE,
          append = FALSE, ...)
{
  if (append && file.exists(file)) {
    wb <- loadWorkbook(file)
  } else {
    ext <- gsub(".*\\.(.*)$", "\\1", basename(file))
    wb <- createWorkbook(type = ext)
  }
  sheet <- createSheet(wb, sheetName)
  rows  <- createRow(sheet, rowIndex=1:2)
  cells <- createCell(rows, colIndex=1:2)
  addDataFrame(x, sheet, col.names = col.names, row.names = row.names,
               startRow = 2, startColumn = 1, colStyle = NULL, colnamesStyle = NULL,
               rownamesStyle = NULL)
  if (!is.null(dimnames(x))) {
    setCellValue(cells[[2,1]], names(dimnames(x))[1])
    setCellValue(cells[[1,2]], names(dimnames(x))[2])
  }
  saveWorkbook(wb, file)
  invisible()
}


## Пример использования
a = matrix(1:12, 4)

dimnames(a) <- list(
  "строки" = letters[1:4],
  "столбцы" = LETTERS[1:3]
)

write_xlsx(a, file = "table.xlsx", sheetName = "таблица 1")
 

Comments

Popular posts from this blog

Преподаватель как родитель

Вопросы множественного выбора в R