Как удалить ведущий "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 в моих документах.