【问题标题】:R data.table - big id's [duplicate]R data.table - 大ID的[重复]
【发布时间】:2016-12-30 14:31:36
【问题描述】:

谁能解释一下为什么它会像它一样工作......我认为这似乎是一个大数字的问题。有没有办法在不将 id 列转换为字符的情况下修复它?

library(data.table)
data <- data.table(id = c(11111111111111, 11111111111112))
data[id == 11111111111111]
data[as.numeric(id) == 11111111111111]
data[, .N, by = id]
data[, .N, by = as.numeric(id)]
data[, .N, by = as.character(id)]

感谢您的帮助!

【问题讨论】:

  • 它按预期工作。你的问题是什么? data[, .N, by = id]# id N 1: 11111111111111 1 2: 11111111111112 1
  • 我得到 id N 1: 1.111111e+13 2
  • 我得到前两个:id N 1: 1.111111e+13 2 with as.character: as.character N 1: 11111111111111 1 2: 11111111111112 1
  • 我正在使用 R 3.3.2 和 data.table 1.10.0。

标签: r data.table


【解决方案1】:

在运行代码之前设置options(scipen=20)。这应该会给你想要的结果

scipen 的文档:

scipen:整数。 决定以固定或指数表示法打印数值时要应用的惩罚。正值偏向固定,负值偏向科学记数法:固定记数法将是首选,除非它比 scipen 数字更宽。

【讨论】:

    【解决方案2】:

    正如akruncomment 中提到的那样

    我正在使用 R 3.3.2 和 data.table 1.10.0。

    我已将 data.table 包更新到 1.10.0 版本,并且运行良好。

    【讨论】:

      猜你喜欢
      • 2020-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-20
      • 1970-01-01
      • 2016-07-02
      相关资源
      最近更新 更多