форматирование имен генов в виде текста в пакете xlsx r

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

Это как-то возможно?

df <- data.frame(a=c(1,2),
                 b=c('SEPT2', 'MARCH1'),
                 c=c('1,2', '1,4'),
                 d=c('1.2', '1.4'),
                 e=c('2-SEP', '1-MARCH'),
                 f=c('APR-1', 'DEC-1'))
wb <- xlsx::createWorkbook()
sheet1 <- xlsx::createSheet(wb, sheetName='test')
xlsx::addDataFrame(df, sheet1, 
                   col.names=TRUE, row.names=FALSE)
xlsx::saveWorkbook(wb, 'test.xlsx')

Я хотел бы отформатировать столбцы b, e и f как текст.

ИЗМЕНИТЬ

так как я спрашивал в комментарии, как я могу найти больше значений форматирования, например, для научной нотации, я нашел это здесь.

text_format = CellStyle(wb, dataFormat=DataFormat("@"))
scientific_format <- CellStyle(wb, dataFormat=DataFormat('0.00E+00'))

person drmariod    schedule 21.08.2017    source источник
comment
XLConnect предлагает более надежные возможности форматирования, чем xlsx (хотя и немного сложнее). Документацию см. здесь setDataFormat: cran.r-project.org/web/ пакеты/XLConnect/XLConnect.pdf   -  person be_green    schedule 21.08.2017


Ответы (1)


Вам просто нужно создать спецификацию формата и добавить ее в addDataFrame с аргументом colStyle.

wb <- xlsx::createWorkbook()
sheet1 <- xlsx::createSheet(wb, sheetName='test')

## Create the format specification
TextFormat = CellStyle(wb, dataFormat=DataFormat("@"))
FormatList = list('2'=TextFormat, '5'=TextFormat,'6' = TextFormat)

xlsx::addDataFrame(df, sheet1, col.names=TRUE, colStyle=FormatList, 
    row.names=FALSE)
xlsx::saveWorkbook(wb, 'test.xlsx')

Примечание: «@» — это код текстового формата.

person G5W    schedule 21.08.2017
comment
Спасибо, это работает как шарм! Есть ли источник для поиска этих кодов? Я хотел бы пометить некоторые столбцы научными числами и т. д. Но я просто не могу найти хороший источник для этих кодов... - person drmariod; 22.08.2017
comment
Просто нашел научную запись и добавил ее к моему вопросу. Мне все еще интересно, есть ли источник о том, как получить стили формата. - person drmariod; 22.08.2017