Поиск…


числовой

Числовой представляет целые числа и удваивает и является режимом по умолчанию, назначенным векторам чисел. Функция is.numeric() будет определять, является ли вектор числовым. Важно отметить, что хотя целые числа и удвоения пройдут is.numeric() , функция as.numeric() всегда будет пытаться преобразовать в double.

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

Двумя значениями являются числовые значения по умолчанию 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"

Хотя в большинстве случаев использование целого или двойного значения не имеет значения, иногда замена двойников целыми числами будет меньше памяти и времени работы. Двойной вектор использует 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