【发布时间】:2017-08-09 16:45:03
【问题描述】:
我在一个文件夹中有几个 .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 来加快速度。
谢谢你们!
【问题讨论】:
-
请使用
rbindlist(lapply(files, fread))。do.call(rbind...很慢。 -
@MattDowle 为什么当你读到这个数字时值会改变
fread('110101001001\n') -
我在这里得到了答案Convenience features of fread。通过
options(datatable.integer64="character")@Sathish -
@YijiaoLiu 请发布您尝试过的演示并将输出作为单独的答案
-
@Sathish 非常感谢!
标签: r data.table