我想将当前时间转换为以微秒为单位的时代时间戳,因为我正在运行以下代码。
options(digits.secs = 6)
now = Sys.time()
as.double(now)当我简单地打印now时,输出是"2017-11-11 20:40:18.370305 CET",它在其中捕获微秒,但是当我使用as.double(now)将它转换为纪元时间戳时,微秒精度就消失了。结果只有1510429218。如何保持微秒?
发布于 2017-11-11 20:30:33
您确实(总是)拥有它们,但是需要告诉print使用更多的数字:
R> n <- Sys.time()
R> print(as.numeric(n), digits=16) ## digits matters here
[1] 1510432192.721936
R> n
[1] "2017-11-11 14:29:52.721935 CST"
R> 发布于 2017-11-11 20:37:26
学习了R如何处理十进制数字非常困难的方式!请看下面的代码。
options(digits.secs = 6)
a = c(as.double(Sys.time()), as.double(Sys.time()), as.double(Sys.time()))
print(a)此代码的输出如下。
[1] 1510430216 1510430216 1510430216时间戳似乎失去了它们的微秒精度。但是,当数据被写入文件或导出时,十进制数字是可见的。
df = data.frame(a)
write.csv(x = df, file = "test.csv")该文件的内容如下:
1 1510430215.888998
2 1510430215.889942
3 1510430215.889942要同时查看R会话/控制台中的十进制数字,需要更改可见性选项。
options(digits = 16)
print(a)现在,所有十进制数字在R会话中也是可见的!
[1] 1510430215.888998 1510430215.889942 1510430215.889942默认的显示数字只有7。因此,如果数字大于7,R只是选择从显示中丢弃十进制数字!这是荒谬的,因为它造成了巨大的混乱。至少应保留一个或两个十进制数字。
https://stackoverflow.com/questions/47242144
复制相似问题