[英]How to wrap data.table::fread in your own package, with bit64 capability?
[英]bit64 integers with fst
我在包含長整數的csv中有數據。 我交換的CSV和之間的數據fst
文件。
例如,
library(bit64)
library(data.table)
library(fst)
library(magrittr)
# Prepare example csvs
DT64_orig <- data.table(x = (c(2345612345679, 1234567890, 8714567890)))
fwrite(DT64_orig, "DT64_orig.csv")
# Read and move to fst
DT64 <- fread("DT64_orig.csv")
write.fst(DT64, "DT64_fst.fst")
DT_fst2 <-
read.fst("DT64_fst.fst") %>%
setDT
# bit64 integers not preserved:
identical(DT_fst2, DT64)
有沒有辦法使用的方式fst
文件data.table
含硫bit64
整數
看起來fst
可能在保存或加載時丟棄列屬性(請在fst
包中詢問問題)。 您可以在此期間自行添加列類型。 bit64::integer64
是引擎蓋下的普通double
bit64::integer64
,因此沒有丟失任何位。 只是告訴R如何打印列的類型信息。
> DT_fst2
x
1: 1.158886e-311
2: 6.099576e-315
3: 4.305569e-314
> setattr(DT_fst2$x, "class", "integer64")
> DT_fst2
x
1: 2345612345679
2: 1234567890
3: 8714567890
> identical(DT_fst2, DT64)
[1] TRUE
Matt絕對正確, fst
目前沒有序列化任何列屬性。 它將在下一個版本中,這將在幾周后到期。 此時,還將支持Date
和POSIXt
等類。 然而,支持自定義屬性將是一項挑戰,因為fst
提供對數據的隨機訪問,並且一些屬性在子設置時被修改(例如,考慮時間序列)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.