R Language
숫자 클래스 및 저장 모드
수색…
숫자
숫자는 정수와 복식을 나타내며 숫자 벡터에 지정된 기본 모드입니다. is.numeric()
함수는 벡터가 숫자인지 여부를 평가합니다. 정수와 복식이 통과 되더라도 것이 중요합니다 is.numeric()
, 함수 as.numeric()
항상 이중 입력 변환을 시도합니다.
x <- 12.3
y <- 12L
#confirm types
typeof(x)
[1] "double"
typeof(y)
[1] "integer"
# confirm both numeric
is.numeric(x)
[1] TRUE
is.numeric(y)
[1] TRUE
# logical to numeric
as.numeric(TRUE)
[1] 1
# While TRUE == 1, it is a double and not an integer
is.integer(as.numeric(TRUE))
[1] FALSE
Doubles 는 R의 기본 숫자 값입니다. 이것들은 배정 밀도 벡터이므로 벡터의 각 값에 대해 8 바이트의 메모리를 차지합니다. R에는 단 정밀도 데이터 유형이 없으므로 모든 실수는 배정도 형식으로 저장됩니다.
is.double(1)
TRUE
is.double(1.0)
TRUE
is.double(1L)
FALSE
정수 는 분수 구성 요소없이 작성할 수있는 정수 입니다. 정수는 그 뒤에 L이 붙은 숫자로 표시됩니다. L이없는 숫자는 이중으로 간주됩니다.
typeof(1)
[1] "double"
class(1)
[1] "numeric"
typeof(1L)
[1] "integer"
class(1L)
[1] "integer"
정수 나 double을 사용하는 대부분의 경우에는 문제가되지 않지만 때때로 double을 정수로 바꾸면 메모리와 작동 시간이 줄어 듭니다. 이중 벡터는 요소 당 8 바이트를 사용하지만 정수 벡터는 요소 당 4 바이트만을 사용합니다. 벡터의 크기가 커지면 적절한 유형을 사용하면 프로세스가 크게 빨라질 수 있습니다.
# test speed on lots of arithmetic
microbenchmark(
for( i in 1:100000){
2L * i
10L + i
},
for( i in 1:100000){
2.0 * i
10.0 + i
}
)
Unit: milliseconds
expr min lq mean median uq max neval
for (i in 1:1e+05) { 2L * i 10L + i } 40.74775 42.34747 50.70543 42.99120 65.46864 94.11804 100
for (i in 1:1e+05) { 2 * i 10 + i } 41.07807 42.38358 53.52588 44.26364 65.84971 83.00456 100
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow