POSIXct/POSIXlt 和亚秒级精度的奇怪行为

2023-12-25

在 POSIXct 中使用亚秒时,我很难按顺序发生序列。

options(digits.secs=6)
x <- xts(1:10, as.POSIXct("2011-01-21") + c(1:10)/1e3)

产生以下输出,为什么时间不按顺序排列?

                        [,1]
2011-01-21 00:00:00.000    1
2011-01-21 00:00:00.002    2
2011-01-21 00:00:00.003    3
2011-01-21 00:00:00.003    4
2011-01-21 00:00:00.005    5
2011-01-21 00:00:00.006    6
2011-01-21 00:00:00.006    7
2011-01-21 00:00:00.007    8
2011-01-21 00:00:00.009    9
2011-01-21 00:00:00.009   10

我期望下面的代码产生相同的输出

c(1:10)/1e3
[1] 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009 0.010

@GSee是对的,这是一个浮点算术问题。和加文·辛普森的 https://stackoverflow.com/users/429846/gavin-simpson answer https://stackoverflow.com/a/9787993/271616是正确的,因为对象就是这样的printed.

R> options(digits=17)
R> .index(x)
 [1] 1295589600.0009999 1295589600.0020001 1295589600.0030000 1295589600.0039999
 [5] 1295589600.0050001 1295589600.0060000 1295589600.0070000 1295589600.0079999
 [9] 1295589600.0090001 1295589600.0100000

所有的精度都在那里,但是这些线format.POSIXlt cause options(digits.secs=6)不被尊重。

np <- getOption("digits.secs")
if (is.null(np)) 
  np <- 0L
else
  np <- min(6L, np)
if (np >= 1L) {
  for (i in seq_len(np) - 1L) {
     if (all(abs(secs - round(secs, i)) < 1e-06)) {
       np <- i
       break
     }
  }
}

由于精度问题,在您的示例中np上面重置为3for环形。以及格式"%Y-%m-%d %H:%M:%OS3"产生您发布的时间。如果您使用,您可以看到时间是准确的"%Y-%m-%d %H:%M:%OS6" format.

R> format(as.POSIXlt(index(x)[1:2]), "%Y-%m-%d %H:%M:%OS3")
[1] "2011-01-21 00:00:00.000" "2011-01-21 00:00:00.002"
R> format(as.POSIXlt(index(x)[1:2]), "%Y-%m-%d %H:%M:%OS6")
[1] "2011-01-21 00:00:00.000999" "2011-01-21 00:00:00.002000"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

POSIXct/POSIXlt 和亚秒级精度的奇怪行为 的相关文章

  • R 中二维核密度估计的混乱

    核密度估计器用于估计特定的概率密度函数 参见mvstat net http www mvstat net tduong research seminars seminar 2001 05 and scikit learn 文档 http s
  • 使用 cmd 和 R 配置 databricks

    我正在尝试使用 databricks cli 并调用 databricks 配置 这就是我从 cmd 执行此操作的方法 somepath gt databricks configure token Databricks Host shoul
  • knitr pandoc:“无法使用 pdf writer 生成 pdf 输出”

    Up front using pandoc 在knitr中 当尝试将 md或 Rmd编译为PDF时 它会抱怨 我正在简化流程可重复的研究 正如许多地方所记录的那样 我在用着pandoc and knitr并制作出色的文档 我还试图为一些不太
  • 如何在闪亮的应用程序中初始化渲染项目的默认值

    介绍 In a shinyApp 我想用动态输入渲染输出 我的问题是 使用shinydashboard使用不同的选项卡 默认值来自 Input 仅当激活相应选项卡时才会呈现 想想输入和输出选项卡 当使用时我得到同样的行为switch声明in
  • 使用 R 并行处理 XML 节点

    我正在尝试与 R 并行处理 XML 文档xml2包装和foreach功能 但我收到 node attrs x node nsMap ns 中的错误 外部指针无效 尝试导出树集群导出 示例代码 library xml2 library for
  • 如何在R中绘制堆积柱形图?

    有谁知道如何使用 R 绘制由超过 1 个变量堆叠的列的直方图 就像excel中的 堆积柱形图 一样 谢谢你 我假设您确实想要一个条形图而不是直方图 在这种情况下 barplot从标准图形或barchart格子包中的两者都可以做到 或者使用
  • 在子目录中构建共享库

    我正在尝试构建一个使用一些 C 代码的 R 包 我有一个编译为可执行文件的 C 库 可以从命令行调用 有一个与之关联的 Makefile 我正在尝试获取信息here http cran r project org doc manuals R
  • 根据值绘制具有条件颜色的折线图

    我想绘制折线图 根据值 它应该改变它的颜色 我发现的是 plot sin seq from 1 to 10 by 0 1 type p col ifelse sin seq from 1 to 10 by 0 1 gt 0 5 red ye
  • R 中带有自定义字段类的参考类?

    我想在另一个引用类中使用自定义引用类 但此代码失败 nameClass lt setRefClass nameClass fields list first character last character methods list ini
  • 数据框中的动物园滞后差异

    我想将滞后差异的结果放回到我的数据框中 这意味着我将拥有针对不同滞后的领先 NA 我在用 new df lag1 lt diff new df Close lag 1 differences 1 arithmetic TRUE na pad
  • 如何使用核心 R 操作/访问“dist”类实例的元素?

    R 中的基本 公共类称为 dist 并且是对称距离矩阵的相对有效的表示 不像一个 matrix 对象 但是 似乎不支持操纵 dist 使用索引对实例 操作员 例如 以下代码不返回任何内容 NULL 或出现错误 First create an
  • 将嵌套 for 循环转换为 R 中的并行循环

    下面您可以在 R 中找到一段代码 我想将其转换为使用多个 CPU 作为并行进程运行 我尝试使用foreach包 但并没有走得太远 考虑到我有 3 级嵌套循环 我找不到一个很好的例子如何让它工作 我们将非常感谢您的帮助 下面的代码示例 我做了
  • 如何在 R 中计算带有变量的表达式?

    我希望这段代码能够设置plt等于 10 gt var plt gt eval paste0 var lt 10 1 plt lt 10 但相反 它返回一个字符串 I tried eval as expression paste0 var l
  • 使用自定义指标的标准差选择带插入符号的调整参数

    我将插入符号与自定义拟合指标一起使用 但我不仅需要最大化该指标 还需要最大化其置信区间的下限 所以我想最大化类似的东西mean metric k stddev metric 我知道如何手动执行此操作 但是有没有办法告诉插入符使用此函数自动选
  • 绘图中的文本错误 | Jupyter-R

    我正在尝试在通过 Anaconda 安装的 Jupyter 笔记本上使用 R 中的 ggplot2 绘制一个带有一些数据的简单散点图 以下是我使用的代码 ggplot data df1 1 1000 geom point mapping a
  • ggplot2:使用 geom_bar 绘制平均值

    我有以下数据框 test2 lt data frame groups c rep group1 4 rep group2 4 X2 c rnorm 4 rnorm 4 label c rep 1 2 rep 2 2 rep 1 2 rep
  • GGplot为点添加数据标签

    如何使用 ggplot 将数据标签添加到点 我有一个名为 stacked 的堆叠数据框 gt head stacked time value variable 1 100 152 2211 gg 2 110 146 3304 gg 3 11
  • 在 R 中创建多维 NetCDF

    我正在尝试使用 R 包创建多维 NetCDF 文件ncdf http cran r project org web packages ncdf index html 我正在对一组 1500 个点进行气候日常观测 每个点的观测数量约为 182
  • update() 具有局部协变量的函数内的模型

    我需要从函数内部更新回归模型 理想情况下 该函数应该适用于任何类型的模型 lm glm multinom clm 更准确地说 我需要添加函数内部定义的一个或多个协变量 这是一个例子 MyUpdate lt function model ra
  • 尽管包在本地构建并通过了所有检查,但 CRAN 上的自动包提交错误

    我正在尝试向 CRAN 提交包 但它未通过一些自动检查 https win builder r project org incoming pretest influenceR 0 1 3 20230517 194638 Debian 00c

随机推荐