Как удалить ведущий "0." в числовой переменной R
Как можно кратко изменить числовую переменную R (сохраняя ее числовую), чтобы, например,
"-0,34" становится просто "-34"?
Ответы
Ответ 1
Только когда вы выводите числовое значение, вам нужно выбрать конкретное представление (т.е. как следует форматировать число). Вы не можете изменить числовую переменную от "-0.34" до "-34"; оба представляют собой представления для одного и того же числа.
Однако при выводе выражения e
вы можете выбрать способ форматирования. Я не знаю какого-либо встроенного способа уйти с ведущего "0", но вы всегда можете просто удалить его вручную:
> sub("^(-?)0.", "\\1.", sprintf("%.2f", -0.34))
[1] "-.34"
Вы можете определить функцию для удобства, например,
numformat <- function(val) { sub("^(-?)0.", "\\1.", sprintf("%.2f", val)) }
Ответ 2
В дополнение к существующим ответам я хотел упомянуть, что пакет weights
имеет функцию rd()
, которая может использоваться для "округления чисел до текста без начального нуля". Конечно, результат не является числовым, а символом.
library("weights")
rd(-0.341, digits=2)
[1] "-.34"
Ответ 3
В дополнение к приятному ответу @stefan я наткнулся на следующий код, который выполняет одно и то же, но печатает больше десятичных знаков:
f = function(X1)gsub("0\\.","\\.", X1)
Ответ 4
Мне нужно было показать числа до трех знаков после запятой.
Если вы хотите напечатать произвольное число десятичных знаков, и вам не нужно добавлять другой пакет (т.е. Пакет weights
выше), то эта функция (адаптированная из ответа @stefan) работает:
numformat <- function(x, digits = 2) {
ncode <- paste0("%.", digits, "f")
sub("^(-?)0.", "\\1.", sprintf(ncode, x))
}
Итак, например:
> numformat(-.232, 2)
[1] "-.23"
> numformat(-.232, 3)
[1] "-.232"
> numformat(-.232, 4)
[1] "-.2320"
Ответ 5
Если для отчета в R Markdown я использую пакет MOTE с функцией apa() и кодом: apa(-0.34, 2, FALSE)
, это вернет -34 в моих документах.