gpt4 book ai didi

r - R中的字符比较是如何工作的?

转载 作者:行者123 更新时间:2023-12-04 04:35:21 26 4
gpt4 key购买 nike

我曾经在我的代码中直接使用字符串比较,而没有考虑太多。然后我最近发现这里有些东西好像它起作用了

> "1" < "2"
[1] TRUE

它失败了
> "6" < "10"
[1] FALSE

我认为对此有一个非常简单的解释,我只是愚蠢。也许它比较了它们的 ASCII 值或其他东西。任何见解?

我问的原因是我计划对具有类字符的时间戳向量进行排序。

示例:
> timeStamps <- c("2013/10/30 12:12:17","2013/10/30 12:12:38","2013/10/30 12:10:32","2013/10/30 12:09:42")
> sort(timeStamps)
[1] "2013/10/30 12:09:42" "2013/10/30 12:10:32" "2013/10/30 12:12:17" "2013/10/30 12:12:38"

这样做安全吗?或者他们的情况是否会失败,我应该将其转换为正确的时间戳格式然后对其进行排序?

最佳答案

字符串之间的比较取决于语言环境和字符串的编码。 ?Comparison帮助页面详细描述了该过程。

大多数(可能是所有)语言环境和编码都会考虑 "0" < "1" < "2" ... " < "9" ,只要您的日期时间格式为 %Y/%m/%d %H:%M:%S ,它们将被正确排序。

不过,这是一种非常危险的方法,因为

  • 个位数的天或月(例如,3 月为 3 而不是 03)将破坏排序顺序。
  • 连字符或其他标点符号而不是斜线会破坏排序顺序。
  • 您将无法识别不存在的日期时间。

  • 总而言之,您用于调试使用字符串作为日期的问题所花费的时间将远远超过编写一行代码以转换为日期格式的时间。
    timeStamps <- strptime(timeStamps, "%Y/%m/%d %H:%M:%S")

    或者
    library(lubridate)
    timeStamps <- ymd_hms(timeStamps)

    关于r - R中的字符比较是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19833826/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com