在 R 中打开 .dat 文件,类似于 python 中的 joblib

open .dat file in R similar to joblib in python

我想在 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")

Error 扫描错误(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 的方法?

网状包为 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")