一个对象如何在 R 中有两个不同的 类?
How can an object have two different classes in R?
classnumeric包括sub-classes integer和double。有趣的是,变量的 class 取决于它的初始化方式。例如:
x <- c(0,0,0,0,0,1,1,1,1,1)
y <- rep(0:1, c(5,5))
x
# [1] 0 0 0 0 0 1 1 1 1 1
y
# [1] 0 0 0 0 0 1 1 1 1 1
class(x)
# [1] "numeric"
class(y)
# [1] "integer"
identical(x,y)
# [1] FALSE
我的问题:为什么 R 不将示例中的 x
强制转换为 class 整数?我认为这样做更有意义,因为 x
是一个 integer
和一个 numeric
向量,但是 numeric
向量不一定是整数向量。因此,将 x
强制为整数 class 可能更直观,至少对我而言。我错过了什么吗?
当您键入 0
时,R 会将其理解为数字(双精度)。整数必须键入 0L
。当然,:
被记录为 return 整数值 "if from
is integer-valued and the result is representable in the R integer type"。
classnumeric包括sub-classes integer和double。有趣的是,变量的 class 取决于它的初始化方式。例如:
x <- c(0,0,0,0,0,1,1,1,1,1)
y <- rep(0:1, c(5,5))
x
# [1] 0 0 0 0 0 1 1 1 1 1
y
# [1] 0 0 0 0 0 1 1 1 1 1
class(x)
# [1] "numeric"
class(y)
# [1] "integer"
identical(x,y)
# [1] FALSE
我的问题:为什么 R 不将示例中的 x
强制转换为 class 整数?我认为这样做更有意义,因为 x
是一个 integer
和一个 numeric
向量,但是 numeric
向量不一定是整数向量。因此,将 x
强制为整数 class 可能更直观,至少对我而言。我错过了什么吗?
当您键入 0
时,R 会将其理解为数字(双精度)。整数必须键入 0L
。当然,:
被记录为 return 整数值 "if from
is integer-valued and the result is representable in the R integer type"。