向量 - 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" 转换为数字,因此它会生成一个字符向量。
开始学习 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" 转换为数字,因此它会生成一个字符向量。