[r] R에서 소수 자릿수 서식

화면에 출력하거나 파일에 쓸 때 소수점 이하 두 자리 만 표시하고 싶은 숫자 (예 : 1.128347132904321674821)가 있습니다. 어떻게합니까?

x <- 1.128347132904321674821

편집하다:

사용 :

options(digits=2)

가능한 답변으로 제안되었습니다. 스크립트에서 한 번만 사용하도록 지정하는 방법이 있습니까? 스크립트에 추가하면 다른 일을하는 것처럼 보이지 않으며 각 숫자를 형식화하기 위해 다시 입력하는 데 관심이 없습니다 (매우 큰 보고서를 자동화합니다).

답 : 반올림 (x, 숫자 = 2)



답변

배경 : 이 페이지에 제안 일부 답변은 (예를 들면, signif, options(digits=...)) 소수의 특정 수의 임의의 수에 대해 표시되는 것을 보장하지 않습니다. 나는 이것이 R의 디자인 기능이라고 가정한다. 좋은 과학적 실천은 ” 유의 한 수치 “의 원리에 기초하여 특정 숫자를 보여주는 것을 포함한다 . 그러나 많은 도메인 (예 : APA 스타일 , 비즈니스 보고서)의 형식 요구 사항에 따라 소수 자릿수가 표시됩니다. 이것은 종종 중요한 수치가 아닌 일관성 및 표준화 목적으로 수행됩니다.

해결책 :

다음 코드는 숫자의 소수점 이하 두 자리를 정확하게 보여줍니다 x.

format(round(x, 2), nsmall = 2)

예를 들면 다음과 같습니다.

format(round(1.20, 2), nsmall = 2)
# [1] "1.20"
format(round(1, 2), nsmall = 2)
# [1] "1.00"
format(round(1.1234, 2), nsmall = 2)
# [1] "1.12"

보다 일반적인 함수는 여기서 다음과 x수 있으며 k보여 소수점 수이다. trimws숫자 벡터가있는 경우 유용 할 수있는 선행 공백을 제거합니다.

specify_decimal <- function(x, k) trimws(format(round(x, k), nsmall=k))

예 :

specify_decimal(1234, 5)
# [1] "1234.00000"
specify_decimal(0.1234, 5)
# [1] "0.12340"


답변

원하는 x소수점 이하 자릿수를 지정할 수 있습니다. 여기에 x많은 소수 자릿수 숫자입니다. 이 숫자의 소수점 이하 자릿수를 최대 8 자리까지 표시한다고 가정합니다.

x = 1111111234.6547389758965789345
y = formatC(x, digits = 8, format = "f")
# [1] "1111111234.65473890"

여기 format="f"에 일반적인 소수점 이하 자릿수 xxx.xxx의 부동 숫자가 표시되고 자릿수가 digits지정됩니다. 반대로, 정수를 표시하려면 format="d"(와 같이 sprintf) 사용하십시오.


답변

내 패키지 formattable을 사용해 볼 수 있습니다 .

> # devtools::install_github("renkun-ken/formattable")
> library(formattable)
> x <- formattable(1.128347132904321674821, digits = 2, format = "f")
> x
[1] 1.13

좋은 점은 x여전히 숫자 형 벡터이며 동일한 서식으로 더 많은 계산을 수행 할 수 있습니다.

> x + 1
[1] 2.13

더 나은, 숫자가 손실되지 않습니다, 당신은 언제든지 더 많은 숫자로 다시 포맷 할 수 있습니다 🙂

> formattable(x, digits = 6, format = "f")
[1] 1.128347


답변

후행 0을 유지한다고 가정하고 소수점 이하 2 자리

sprintf(5.5, fmt = '%#.2f')

어느 것이

[1] "5.50"

@mpag가 아래에 언급했듯이 R은 때때로 이것으로 예기치 않은 값을 줄 수 있고 둥근 방법, 예를 들어 sprintf (5.5550, fmt = ‘% #. 2f’)는 5.56이 아닌 5.55를 나타냅니다.


답변

그런 것 :

options(digits=2)

숫자 정의 옵션 :

digits: controls the number of digits to print when printing numeric values.


답변

기능 prettyNum, 형식 확인

시험 시행 제로 (예 : 123.1240) 사용 sprintf(x, fmt='%#.4g')


답변

고정 숫자보다 유효 숫자를 선호하는 경우 signif 명령이 유용 할 수 있습니다.

> signif(1.12345, digits = 3)
[1] 1.12
> signif(12.12345, digits = 3)
[1] 12.1
> signif(12345.12345, digits = 3)
[1] 12300