【问题标题】:vector - character/integer class (under the hood)矢量 - 字符/整数类(引擎盖下)
【发布时间】:2018-12-04 04:29:43
【问题描述】:

开始学习 R,如果能帮助我理解 R 如何决定不同向量的类别,我将不胜感激。我初始化vec <- c(1:6),当我执行class(vec)时,我得到'整数'。为什么它不是“数字”,因为我认为 R 中的整数看起来像这样:4L

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

【问题讨论】:

  • 如果向量中的至少一个值是字符,则所有向量都被视为字符。
  • 如果您希望单个元素以不同的类型存储,请使用 list
  • 来自?c:“输出类型由层次结构中组件的最高类型确定 NULL
  • integer 的表示通常与近似的numeric 的表示无法区分。 L 仅用于定义一个整数,而不是用于查看它们。 (也许澄清一下或冒着搅浑水的风险:is.integer(4L) && is.numeric(4L) 是真的,因为 integer 确实是 numeric 的特例,即使内部存储和精度有很大不同。)
  • @r2evans,发表您的评论作为答案...?

标签: r vector integer character numeric


【解决方案1】:

键入以下内容,可以看到冒号操作符的帮助页面。

?`:`

这是一段。

对于数字参数,一个数字向量。这将是整数类型 如果 from 是整数值并且结果可以在 R 中表示 整数类型,否则为 "double" 类型(又名模式 "numeric")。

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

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

对于第二个问题,由于向量中的所有元素必须属于同一类型,R 会自动将所有元素转换为相同类型。在这种情况下,可以将所有内容都转换为字符,但不能将“a”转换为数字,因此会产生字符向量。

【讨论】:

    猜你喜欢
    • 2023-04-03
    • 2013-03-03
    • 1970-01-01
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-01
    相关资源
    最近更新 更多