我对R中的数据结构概念非常困惑(这些概念在SAS中更容易理解)。
x <- 1:5
和x <- c(1,2,3,4,5)
之间有什么区别吗?
在环境窗口中,我知道其中一个是int
,另一个是num
。
答案 0 :(得分:4)
x
和y
并不完全相同,因为它们具有不同的存储模式,正如您使用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} } ...