gpt4 book ai didi

r - 如何在R中的data.table中使长数字不显示科学模式?

转载 作者:行者123 更新时间:2023-12-04 12:47:51 26 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Force R not to use exponential notation (e.g. e+10)?

(4 个回答)


4年前关闭。




我在一个文件夹中有几个 .csv 文件。我想使用命令将它们全部读取一次

library(data.table)
path <-path
list <- list.files(path,pattern="*.csv")
files <- paste(path,list,sep='/')
DT <- do.call(rbind, lapply(files, fread))

但是,由于第一列是一个 12 位数字,因此 data.table 以科学的数字方式显示它,例如
5.43971221673e-313

我应该如何将所有科学数字转换为正常整数?

非常感谢!

第一次编辑:
我使用命令后
options("scipen"=100, "digits"=12)

它仍然显示数字
5.43971221673e-313

即使在我应用命令之后
options(scipen=999)

它把号码还给我
0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000543971221673

甚至 543971221673 不是正确的数字,正确的应该是
110101001001

我正在使用 data.frame 尝试转换,它有效。
a <- read.csv(files)
a[,1] <- as.character(a[,1])

但我更喜欢使用 data.table 使其快速。

谢谢你们!

最佳答案

此问题已通过引用此处解决(至少暂时)Convenience features of fread .

'fread 自动检测大整数 (> 2^31) 并将它们作为 integer64 类型从 bit64 包中读取。 '

只需要

install.packages("bit64")

或放
options(datatable.integer64="character")

在data.table之前,然后它就可以工作了。这个例子可能是
library(data.table)
path <-path
list <- list.files(path,pattern="*.csv")
files <- paste(path,list,sep='/')
options(datatable.integer64="character")
DT <- rbindlist(lapply(files, fread))

感谢@Sathish 这是我第一次在这里问 R 问题!

关于r - 如何在R中的data.table中使长数字不显示科学模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42869156/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com