首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R:用微秒将Sys.now()转换为纪元时间戳

R:用微秒将Sys.now()转换为纪元时间戳
EN

Stack Overflow用户
提问于 2017-11-11 19:50:39
回答 2查看 275关注 0票数 3

我想将当前时间转换为以微秒为单位的时代时间戳,因为我正在运行以下代码。

代码语言:javascript
复制
options(digits.secs = 6)
now = Sys.time()    
as.double(now)

当我简单地打印now时,输出是"2017-11-11 20:40:18.370305 CET",它在其中捕获微秒,但是当我使用as.double(now)将它转换为纪元时间戳时,微秒精度就消失了。结果只有1510429218。如何保持微秒?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-11 20:30:33

您确实(总是)拥有它们,但是需要告诉print使用更多的数字:

代码语言:javascript
复制
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> 
票数 0
EN

Stack Overflow用户

发布于 2017-11-11 20:37:26

学习了R如何处理十进制数字非常困难的方式!请看下面的代码。

代码语言:javascript
复制
options(digits.secs = 6)    
a = c(as.double(Sys.time()), as.double(Sys.time()), as.double(Sys.time()))
print(a)

此代码的输出如下。

代码语言:javascript
复制
[1] 1510430216 1510430216 1510430216

时间戳似乎失去了它们的微秒精度。但是,当数据被写入文件或导出时,十进制数字是可见的。

代码语言:javascript
复制
df = data.frame(a)
write.csv(x = df, file = "test.csv")

该文件的内容如下:

代码语言:javascript
复制
1 1510430215.888998
2 1510430215.889942
3 1510430215.889942

要同时查看R会话/控制台中的十进制数字,需要更改可见性选项。

代码语言:javascript
复制
options(digits = 16)
print(a)

现在,所有十进制数字在R会话中也是可见的!

代码语言:javascript
复制
[1] 1510430215.888998 1510430215.889942 1510430215.889942

默认的显示数字只有7。因此,如果数字大于7,R只是选择从显示中丢弃十进制数字!这是荒谬的,因为它造成了巨大的混乱。至少应保留一个或两个十进制数字。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47242144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档