【问题标题】:open .dat file in R similar to joblib in python在 R 中打开 .dat 文件,类似于 python 中的 joblib
【发布时间】:2021-03-28 18:59:40
【问题描述】:

我想在 R 中读取 .dat 文件,data.dat 包含两个列表列表 (a,b),尺寸分别为 50*5000*3050*5000*5a 包含 01024 之间的值,b 包含 01 之间的值。

第一次尝试

#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,请查看 readRDSsaveRDS。如果您想在 R 和 Python 之间共享二进制数据,请查看 Apache Arrow。
  • @KonradRudolph 我不想在 R 和 Python 之间共享二进制数据。我想在 R 中读取 .dat 文件
  • 那么.dat 文件来自哪里?来自工作库?那么听起来你确实想要共享数据,在这种情况下——查看建议;或试用“网状”包。一般来说,.dat 不是标准格式:它只是一个任意的文件扩展名。 Anything 可以将其文件命名为.dat,这并没有告诉我们如何读取文件。 “dbs”包使用的.dat格式与Python的joblib使用的.dat文件无关。
  • @KonradRudolph 感谢您的指导。我成功使用网状包读取R中的数据。我也回答了这个问题。

标签: r joblib


【解决方案1】:

reticulate 包为 Python 模块、类和函数提供了一个 R 接口。

#install.packages("reticulate")
library(reticulate)
use_python("/usr/local/bin/python")
use_virtualenv("myenv")
use_condaenv("myenv")
py_config()

#to install the required packages in python file
run_python_file <- function(python_file){
  a = try(reticulate::py_run_file(python_file),silent=TRUE)
  if(inherits(a,"try-error")& grepl("ModuleNotFoundError",a)){
    system(sprintf("python -m pip install %s",gsub(".* |\\W","",c(a))))
    run_python_file(python_file)
  }
  else a
}
data  = run_python_file("readfile.py")

data$a
data$b

readfile.py

#!/usr/bin/python
import joblib
a, b = joblib.load("data.dat")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    相关资源
    最近更新 更多