2016-06-02 12 views
3

У меня есть вектор R a = c(.45652356112, .0000063983562). И я хочу отформатировать числа в этом векторе так, чтобы получившийся вектор был c(.46, 6.4e-06). Когда яФорматирование номера в R

format(a, digits=2, nsmall=2) 

то результат c(4.6e-01, 6.4e-06), а не то, что я хочу. По-видимому, каждый из элементов должен быть передан функции format() отдельно, чтобы получить желаемый результат. Однако, поскольку длина моего оригинала a составляет 50000, цикл цикла, который вызывает format() для каждого элемента, является слишком медленным. Как получить желаемое форматирование без цикла?

ответ

5

Вы можете поместить формат внутри ifelse условия

ifelse(a < 0.001, format(a, digits = 2, nsmall = 2), round(a, 2)) 
# [1] "0.46" "6.4e-06" 
+0

Спасибо так много! Я не знал о функции ifelse. – user5054

+1

@ user5054 Добро пожаловать. Это удобная векторная реализация 'if (...) {...} else {...}' – SymbolixAU

Смежные вопросы