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를 나타냅니다.
기능 prettyNum, 형식 확인
시험 시행 제로 (예 : 123.1240) 사용 sprintf(x, fmt='%#.4g')
그런 것 :
options(digits=2)
숫자 정의 옵션 :
digits: controls the number of digits to print when printing numeric values.
고정 숫자보다 유효 숫자를 선호하는 경우 signif 명령이 유용 할 수 있습니다.
> signif(1.12345, digits = 3)
[1] 1.12
> signif(12.12345, digits = 3)
[1] 12.1
> signif(12345.12345, digits = 3)
[1] 12300
이 함수 formatC()
를 사용하여 숫자를 소수점 이하 두 자리로 서식을 지정할 수 있습니다. 결과 값에 후행 0이 포함 된 경우에도이 함수는 소수점 이하 두 자리를 제공합니다.
강제 변형 K 소수점 이하 자릿수에이 변형을 사용하고 있습니다.
# format numeric value to K decimal places
formatDecimal <- function(x, k) format(round(x, k), trim=T, nsmall=k)
R의 숫자 객체는 배정 밀도 로 저장되므로 소수점 이하 16 진수의 정밀도를 얻을 수 있습니다. 나머지는 노이즈입니다. 위에 표시된 숫자는 단지 예일 뿐이지 만 22 자리입니다.
나처럼 보일 것 같아
library(tutoR)
format(1.128347132904321674821, 2)
약간의 온라인 도움말 당 .
숫자 또는 목록을 반올림하려면 간단히
round(data, 2)
그런 다음 데이터는 소수점 이하 2 자리로 반올림됩니다.
참고 URL : https://stackoverflow.com/questions/3443687/formatting-decimal-places-in-r
'IT story' 카테고리의 다른 글
재귀 적으로 Chmod (0) | 2020.04.14 |
---|---|
배열을 함수 인수 목록으로 변환 (0) | 2020.04.14 |
파이썬을 사용하여 빈 파일 만들기 (0) | 2020.04.14 |
정렬되지 않은 목록 항목에서 들여 쓰기를 제거하는 방법? (0) | 2020.04.14 |
OS 감지 makefile (0) | 2020.04.14 |