Как избежать автоматического округления ячеек readWorksheet XLConnect

Я использую функцию readWorksheet() пакета XLConnect для чтения на каждом листе файла excel. Таким образом, я заметил, что числа автоматически округляются до 0 или 2 цифр после запятой. Есть ли объяснение такому поведению и/или возможность избежать округления при чтении?

Я использую следующий код:

wb <- XLConnect::loadWorkbook(filepath) # load a workbook
lst <- XLConnect::readWorksheet(wb, sheet = getSheets(wb)) # load all worksheets

person user116    schedule 03.11.2016    source источник
comment
Вы можете попробовать lst <- readWorksheet(wb, sheet = "Sheet1", colTypes = c(XLC$DATA_TYPE.NUMERIC)) или что-то в этом роде. Каков формат ячеек, если вы откроете их в Excel? Возможно, изменение формата (например, количества десятичных знаков) столбца в Excel меняет способ импорта данных R.   -  person KenHBS    schedule 03.11.2016
comment
Ячейки в Excel имеют номер формата. Указание colTypes не помогает. Когда я указываю их числовым, значения округляются до 0 цифр после запятой.   -  person user116    schedule 04.11.2016
comment
Вы уверены, что значения изменены, а не только отображение значений? Как вы отображаете значения в R?   -  person user20637    schedule 04.11.2016
comment
Да, значения изменились. Я сравнил это, используя «read.xlsx2 ()» и «options (цифры = ...)».   -  person user116    schedule 04.11.2016
comment
'read.xlsx2()' без необходимости вводит новое усложнение в виде другого пакета (xlsx). Вы упоминаете «options (digits =)», поэтому я предполагаю, что вы отображаете значения в R, используя «print»; 'digits=' управляет общим количеством цифр, а не количеством десятичных знаков. Если какое-либо из ваших чисел имеет много цифр перед десятичной дробью, печать может не отображать все сохраненные цифры после десятичной дроби. Я только что попробовал ваш точный код и вижу много цифр после запятой - без усечения. Я не могу воспроизвести заявленную вами проблему.   -  person user20637    schedule 04.11.2016
comment
Как уже предполагает @user20637, вас может просто ввести в заблуждение то, что R печатает числовые значения. options(digits = ...) управляет количеством цифр для печати. Другая возможность заключается в том, что некоторые ваши числа преобразуются в character, потому что некоторые ячейки (в том же столбце) на самом деле имеют текстовый формат - в этом случае форматирование ячейки принимается во внимание.   -  person Martin Studer    schedule 07.11.2016
comment
Спасибо за ваши ответы. Я уверен, что округление не связано с поведением печати R. @MartinStuder Ваше второе предположение кажется весьма вероятным. Вероятно, большинство столбцов преобразованы в character, так как в них есть текстовые элементы. Я нашел еще один вопрос по той же проблеме ссылка Вы случайно не знаете, есть ли лучший вариант, чем предложенный обходной путь - чтение всех данных дважды?   -  person user116    schedule 07.11.2016
comment
@ user116 Нет необходимости читать лист дважды. Если вы знаете ожидаемые типы данных, просто укажите colTypes, возможно, в сочетании с forceConversion = TRUE.   -  person Martin Studer    schedule 04.12.2016