【问题标题】:R: String character vector using logical OR | to sprintf time intervalR:使用逻辑或的字符串字符向量 |到 sprintf 时间间隔
【发布时间】:2014-12-12 18:10:34
【问题描述】:

我正在尝试创建一个以 20 分钟为间隔的小时向量,从上午 09:00 到 15:40,如下所示:

09:00, 09:20, 09:40, 10:00, 10:20... 15:00, 15:20, 15:40.

我正在使用 sprintf 命令。

如果我使用

sprintf("%02d:00", c(09.00:15.00))

我明白了

[1] "09:00" "10:00" "11:00" "12:00" "13:00" "14:00" "15:00"

我用于之前的 ggplot 图表,并且成功了,虽然我还在学习如何使用它。

但是,我认为我可以使用类似的东西

sprintf("%02d:00"|"%02d:20", c(09.20:15.40))

获得

[1] "09:20" "10:00" "10:20" "11:00" "11:20"... "14:00" "14:20" "15:00" "15:20"

但我知道我不能,这不是一个数值。我想知道为什么没有办法解决这个问题,而不是完全不同且更简单的代码。如果我做到了,是因为我一直在思考这段代码,虽然我很欣赏一个工作代码,但我真的很想看看我是不是太迷茫了。

【问题讨论】:

    标签: r string printf logic intervals


    【解决方案1】:

    也许没有那么短,但这利用了您实际上在这里使用日期/时间值并且它们的行为不像常规数字序列的事实

    strftime(seq(
      as.POSIXct("2014-01-01 9:20:00"), 
      as.POSIXct("2014-01-01 15:40:00"), by="20 min")
    , "%H:%M")
    
    #  [1] "09:20" "09:40" "10:00" "10:20" "10:40" "11:00" "11:20" "11:40" "12:00"
    # [10] "12:20" "12:40" "13:00" "13:20" "13:40" "14:00" "14:20" "14:40" "15:00"
    # [19] "15:20" "15:40"
    

    【讨论】:

    • 我仍然对 POSIXct 对象感到困惑。据称我可以将它们与数据混合并将它们相乘或加减时间,但同时,它们被限制为字符串。我错了吗?感谢您的快速回复,弗利克先生。 :)
    • POSIXct 根本不是字符串。 strftime 格式 POSIXct 值是字符串。它们是特殊对象,用于存储自特定事件以来的秒数,并具有执行一些基本算术的重载方法。您可以阅读?DateTimeClasses 帮助页面了解更多信息。
    猜你喜欢
    • 2015-09-26
    • 2011-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-12
    • 2018-05-12
    • 2021-11-28
    相关资源
    最近更新 更多