r - 来自包chron奇怪格式的R函数times()
问题描述
非常简单的操作“times(3/24)”与包 chron 中的 times 函数导致:
> 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
对此有什么解释吗?
解决方案
问题是"times"
chron 中的类不提供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 上。
推荐阅读
- algorithm - 递归计算数据的运行平均值
- node.js - 无法读取未定义的属性“代码”,解码 Firebase ID 令牌失败
- python - 使用 Pandas 访问单个单元格
- google-app-engine - 我可以在 Google App Engine 上使用通配符域吗?
- mysql - 不为 NULL 时对查询结果进行分组
- java - addListenerOnButton 在 Android Studio 的片段中不起作用
- c# - 由于枚举使用动态时如何访问 Dapper 结果
- node.js - nodejs中的环境变量在控制台内工作,记录但将参数传递给函数时出错
- php - 一行平行文本中的 FPDF 多单元格功能
- swift - 使用 Xcode 11.3 在 iOS 13 上未显示栏