сохранение названий размерностей
В 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")
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