向量 - character/integer class(引擎盖下)

vector - character/integer class (under the hood)

开始学习 R,希望对理解 R 如何决定不同向量的 class 有所帮助。我初始化 vec <- c(1:6),当我执行 class(vec) 时,我得到 'integer'。为什么不是 'numeric',因为我认为 R 中的整数看起来像这样:4L

还有vec2 <- c(1,'a',2,TRUE),为什么是class(vec2) 'character'?我猜 R 会识别字符并自动将其他所有内容分配为字符......所以它实际上看起来像 c('1','a','2','TRUE') 我是对的吗?

键入以下内容,您可以看到冒号运算符的帮助页面。

?`:`

这是一段。

For numeric arguments, a numeric vector. This will be of type integer if from is integer-valued and the result is representable in the R integer type, otherwise of type "double" (aka mode "numeric").

因此,在您的示例 c(1:6) 中,由于 from 参数的 1 可以在 R 中表示为整数,因此生成的序列变为整数。

顺便说一下,在这种情况下不需要 c 来创建向量。

对于第二个问题,由于向量中的所有元素必须是同一类型,R 会自动将所有元素转换为同一类型。在这种情况下,可以将所有内容都转换为字符,但无法将 "a" 转换为数字,因此它会生成一个字符向量。