【发布时间】:2021-03-28 18:59:40
【问题描述】:
我想在 R 中读取 .dat 文件,data.dat 包含两个列表列表 (a,b),尺寸分别为 50*5000*30 和 50*5000*5。 a 包含 0 和 1024 之间的值,b 包含 0 和 1 之间的值。
第一次尝试:
#install.packages("devtools")
#devtools::install_github("insysbio/dbs-package")
library("dbs")
file_path = system.file(package = "dbs", "data.dat")
raw_data = read.dat(file_path)
data = import.dat(raw_data)
错误
data = import.dat(raw_data)
Error in x[subset & !is.na(subset), vars, drop = drop] :
subscript out of bounds
第二次尝试:
> read.table("data.dat", fileEncoding="latin1")
错误扫描错误(file = file, what = what, sep = sep, quote = quote, dec = dec, : 第 2 行没有 3 个元素
第三次尝试:
data = scan(file="data.dat", what=list(x="", y="", z=""), flush=TRUE)
输出 读取了 3 个列表,但包含垃圾值
我可以通过以下方式在 Python 中打开文件:
import joblib
a, b = joblib.load("data.dat")
在 R 中有没有替代 joblib 的方法?
【问题讨论】:
-
joblib
dat文件似乎特定于 joblib,并使用 Python 的二进制对象序列化生成。我不知道这种机制对 R 的移植(因为它的效用会受到限制)。如果你想在 R 中有一个 equivalent,请查看readRDS和saveRDS。如果您想在 R 和 Python 之间共享二进制数据,请查看 Apache Arrow。 -
@KonradRudolph 我不想在 R 和 Python 之间共享二进制数据。我想在 R 中读取 .dat 文件
-
那么
.dat文件来自哪里?来自工作库?那么听起来你确实想要共享数据,在这种情况下——查看建议;或试用“网状”包。一般来说,.dat不是标准格式:它只是一个任意的文件扩展名。 Anything 可以将其文件命名为.dat,这并没有告诉我们如何读取文件。 “dbs”包使用的.dat格式与Python的joblib使用的.dat文件无关。 -
@KonradRudolph 感谢您的指导。我成功使用网状包读取R中的数据。我也回答了这个问题。