В R возможно ли написать пустой фрейм данных без наблюдений, но с именами столбцов в лист Excel? - PullRequest
0 голосов
/ 30 мая 2019

У меня есть 2 кадра данных: один с наблюдениями и один без наблюдений. Я использую пакет "xlsx" для записи фрейма данных в лист Excel. Поскольку второй фрейм данных не имеет наблюдений, функция write.xlsx выдает ошибку:

Ошибка в mapply (setCellValue, ячейки [seq_len (nrow (ячейки)), colIndex [ic]],: Входы нулевой длины нельзя смешивать с входами ненулевой длины

Я хочу иметь возможность написать лист Excel с пустым фреймом данных и сохранить имена столбцов и выводить их без наблюдений.

library(xlsx)
nonemptydf <- data.frame("SN" = 1:2,
                         "Age" = c(21, 15),
                         "Name" = c("John", "Jane"))
emptydf <- data.frame("SN" = numeric(),
                      "Age" = numeric(),
                      "Name" = character())
write.xlsx(nonemptydf,
           "Test.xlsx",
           sheetName = "Not empty")

#The code below won't work because emptydf has no observations
write.xlsx(emptydf,
           "Test.xlsx",
           sheetName = "Empty",
           append = TRUE)

Ошибка из функции xlsx: Ошибка в mapply (setCellValue, ячейки [seq_len (nrow (ячейки)), colIndex [ic]],: Входы нулевой длины нельзя смешивать с входами ненулевой длины

1 Ответ

0 голосов
/ 30 мая 2019

Tibbles обладают большей гибкостью и функциональностью, чем объекты data.frame. В частности, вы можете использовать функцию tribble () для указания имен столбцов непосредственно в вызове.

# load the packages    
library(tidyverse)    # provides the tribble() function
library(zip)          # helps zip the dataset that will be exported to R
library(rio)          # better export package than xlsx

# create your tibble
d <- tribble(
       ~SN, ~Age, ~Name
)

# convert to data.frame (if you'd prefer this class); it's not necessary though...
d <- as.data.frame(d)

# export your data frame as an Excel-compatible file
export(d, "data.xlsx")
...