Почему вопросительный знак в заголовке столбца фрейма данных отображается как точка при выводе из r на лист excel (с использованием пакета xlsx)?

Предположим, я использую пакет xlsx для записи кадра данных из r в excel. И предположим, что у меня есть кадр данных с заголовком столбца, который включает вопросительный знак (код ниже):

library(xlsx)
rm(list = ls())

fpath <- "whatever filepath"

#My df
df <- data.frame("Questions?" = c("bla", "bla bla"), "123Numbers"= c(1,2))

#Now output 
wb <- createWorkbook()
sh <- createSheet(wb, sheetName = "Bla")
addDataFrame(df, sh)

saveWorkbook(wb, paste0(fpath,".xlsx"))

Когда я открываю выходной файл Excel, я получаю следующее: Результат

  1. Почему вопросительный знак отображается в виде точки в заголовке столбца «Вопросы»?
  2. Почему перед заголовком столбца 123Numbers стоит случайный символ «X»?

Конечно, если есть простое решение, которое мне не хватает, пожалуйста, сообщите. Спасибо!


person Norma G    schedule 07.01.2020    source источник
comment
Вы можете использовать check.names = FALSE в data.frame, т.е. df <- data.frame("Questions?" = c("bla", "bla bla"), "123Numbers"= c(1,2), check.names = FALSE)   -  person akrun    schedule 07.01.2020
comment
работает отлично. Я никогда раньше не использовал check.names, так что посмотрю, большое спасибо!   -  person Norma G    schedule 07.01.2020


Ответы (1)


Аргумент check.names по умолчанию равен TRUE в data.frame, и он гарантирует, что все нестандартные имена столбцов будут изменены с помощью apply (make.names-> make.unique). Если мы укажем его как FALSE, имена столбцов не изменятся.

df <- data.frame("Questions?" = c("bla", "bla bla"),
    "123Numbers"= c(1,2), check.names = FALSE)
person akrun    schedule 07.01.2020