1:5和c(1,2,3,4,5)之间有什么区别?

时间:2015-10-26 01:24:21

标签: r vector

我对R中的数据结构概念非常困惑(这些概念在SAS中更容易理解)。

x <- 1:5x <- c(1,2,3,4,5)之间有什么区别吗? 在环境窗口中,我知道其中一个是int,另一个是num

1 个答案:

答案 0 :(得分:4)

下面的

xy并不完全相同,因为它们具有不同的存储模式,正如您使用str(x)str(y)所发现的那样。根据我的经验,这种区别在99%的时间里并不重要; R使用相当宽松的类型,并且必要时会自动将整数提升为double(即双精度浮点)。低于最大整数值(.Machine$integer.max)的整数和浮点值可以在不丢失信息的情况下来回转换。 (整数确实占用的空间略小,并且使用上面的@RichardScriven评论可以稍快一点计算。)

如果您想创建整数向量,请按以下方式附加L ...或按照上述评论中的建议使用as.integer()

x <- 1:5
y <- c(1,2,3,4,5)
z <- c(1L,2L,3L,4L,5L)
all.equal(x,y) ## test for _practical_ equivalence: TRUE
identical(x,y) ## FALSE
identical(x,z) ## TRUE

storage.mode()class()也可能有用,以及is.integer()is.double()as.integer()as.double(),{{1} } ...