【问题标题】:R function times() from package chron strange formatting来自包chron奇怪格式的R函数times()
【发布时间】:2018-09-07 13:02:06
【问题描述】:

非常简单的操作 "times(3/24)" 与包 chron 中的时间函数导致:

> times(3/24)  
[1] 03:00:00

当我在数据框中使用它时,它不会导致正确的格式。相反,它会写入原始数字“0.125”。但是,当我将它包含在 ifelse() 语句中时,它会起作用。

参见示例:

> X<-seq(1,10,1)  
> tdata<-as.data.frame(X)  
> tdata$T3AM<-times(3/24)  
> tdata$T3AMx<-times(ifelse(tdata$X>0,3/24,3/24))  
> tdata  
    X  T3AM    T3AMx  
1   1 0.125 03:00:00  
2   2 0.125 03:00:00  
3   3 0.125 03:00:00  
4   4 0.125 03:00:00  
5   5 0.125 03:00:00  
6   6 0.125 03:00:00  
7   7 0.125 03:00:00  
8   8 0.125 03:00:00  
9   9 0.125 03:00:00  
10 10 0.125 03:00:00    

对此有什么解释吗?

【问题讨论】:

    标签: r chron


    【解决方案1】:

    问题是 chron 中的 "times" 类不提供 rep 方法。如果我们添加一个,那么它就可以了。

    library(chron)
    rep.times <- function(x, ...) times(rep(as.numeric(x), ...))
    
    # from question:    
    X <- seq(1,10,1)
    tdata <- as.data.frame(X)
    tdata$T3AM <- times(3/24)
    tdata$T3AMx <- times(ifelse(tdata$X>0,3/24,3/24))
    

    给予:

    > tdata  
        X     T3AM    T3AMx
    1   1 03:00:00 03:00:00
    2   2 03:00:00 03:00:00
    3   3 03:00:00 03:00:00
    4   4 03:00:00 03:00:00
    5   5 03:00:00 03:00:00
    6   6 03:00:00 03:00:00
    7   7 03:00:00 03:00:00
    8   8 03:00:00 03:00:00
    9   9 03:00:00 03:00:00
    10 10 03:00:00 03:00:00
    

    请注意,Kurt 刚​​刚将 rep.times 添加到 chron 2.3-53,现在应该在 CRAN 上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-30
      • 2012-03-29
      • 2017-09-14
      • 1970-01-01
      • 1970-01-01
      • 2017-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多