Как записать числа в экспоненциальном представлении в R

Мне интересно, есть ли способ записать 0,000523 в экспоненциальном представлении (5.23x10-4) в R. Я использую команду xtable для записи таблицы в latex.


person R. Saeiti    schedule 06.01.2017    source источник
comment
format(x, scientific = T) дает 1] "5.23e-04"   -  person joel.wilson    schedule 06.01.2017
comment
Вы можете использовать options(scipen = -15)   -  person akrun    schedule 06.01.2017


Ответы (2)


Вы можете использовать sprintf следующим образом:

x <- c(0.000523, -523)

sprintf("%.2fx10^{%d}", 
        x/10^floor(log10(abs(x))), 
        floor(log10(abs(x))))
#[1] "5.23x10^{-4}" "-5.23x10^{2}"

Вам нужно будет написать некоторые ifelse условия, чтобы иметь различное форматирование в зависимости от десятичных диапазонов.

person Roland    schedule 06.01.2017
comment
как насчет того, чтобы gsub("e", "x10^", format(scientific = T, x)) отдать 5.23x10^-04. хоть и не логически верный шаг - person joel.wilson; 06.01.2017

Пакет xtable предлагает функцию sanitize.numbers(), которая может это сделать. Он работает с символами, поэтому сначала вам нужно использовать format() для преобразования чисел в символы:

library(xtable)
sanitize.numbers(format(0.000523, scientific = TRUE),
                 type = "latex", math.style.exponents = TRUE)
## [1] "$5.23 \\times 10^{-4}$"

Как вы заметили, это дает не 5.23x10^-4, а скорее эквивалент этого выражения в нотации LaTeX, что может быть не тем, что вам нужно.

person Stibu    schedule 06.01.2017