huxtable в R по умолчанию соответствует научной нотации даже с опциями (scipen = 999) - PullRequest
0 голосов
/ 28 апреля 2018

Я пытался сгенерировать достойные таблицы и перепробовал много пакетов за последнюю неделю, у меня голова плывет. Начал на упаковке: сегодня утром и застрял, пытаясь избавиться от научной нотации:

x <- mtcars[1:5,1:2]
x$mpg <- x$mpg*10000000 # get some large numbers
library(huxtable)
x1 <- as_hux(x)
x1
  # 2.1e+08    6        
  # 2.1e+08    6        
  # 2.28e+08   4        
  # 2.14e+08   6        
  # 1.87e+08   8 

Я установил глобальные параметры (scipen = 999, цифры = 9) некоторое время назад, и у меня не было проблем с пакетом: huxtable. В конце концов я нашел / наткнулся на решение с:

x1 <- format(as_hux(x, scientific=FALSE))

Я уже установил scipen, так что в итоге я ходил взад и вперед, пытаясь починить то, что не сломалось. Мой (квази-нубский) вопрос: прав ли я, что по какой-то причине этот пакет переопределяет глобальные настройки? Есть ли способ предотвратить это или настроить какое-либо предупреждение при переопределении? Можно ли установить этот формат глобально? Я не собираюсь использовать научную запись в ближайшее время.

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Вы можете использовать опцию number_format(), чтобы изменить способ отображения чисел huxtable:

number_format(x1) <- 2 # decimal places
x1
  210000000.00      6.00  
  210000000.00      6.00  
  228000000.00      4.00  
  214000000.00      6.00  
  187000000.00      8.00  
Column names: mpg, cyl

number_format(x1) <- '%2.2f' # sprintf notation
x1
  210000000.00      6.00  
  210000000.00      6.00  
  228000000.00      4.00  
  214000000.00      6.00  
  187000000.00      8.00  

Column names: mpg, cyl

# arbitrary function, wrapped in a list:
number_format(x1) <- list(function (x) prettyNum(sprintf(x, "%2.2f"), ",")) 
x1
  210,000,000.00      6.00  
  210,000,000.00      6.00  
  228,000,000.00      4.00  
  214,000,000.00      6.00  
  187,000,000.00      8.00  
0 голосов
/ 29 апреля 2018

Когда вы используете метод "print()" (набрав x1 имя переменной), пакет самостоятельно выводит значения. Для этого он использует собственный метод отображения. Бывает, что тот, кто написал этот пакет, не смотрит на глобальные параметры, установленные функцией options (). Он не перезаписывает какие-либо параметры, а просто игнорирует их. Однако если вы извлечете столбец из структуры x1, R выведет значения в желаемом формате:

> print(x1$mpg)
[1] 210000000 210000000 228000000 214000000 187000000

Примечание: это не единственный пакет, который делает это.

Кстати, решение, которое вы нашли (функция format()), в действительности преобразует данные обратно в обычный фрейм данных и, следовательно, отображает значения, используя выбранную вами опцию scipen = 999.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...