当我试图从位于Arvados平台上的RDS文件读取R对象时,我遇到了一个错误。首先,我使用以下代码连接到Arvados并获得一个文件列表:
library('ArvadosR')
# Read ARVADOS_API_TOKEN and ARVADOS_API_HOST
readRenviron("~/.config/arvados/arv.conf")
# Connect to Arvados
arv = Arvados$new()
# Get collection object
coll = Collection$new(arv, "<collection_uuid>")
# List collection content
coll$getFileListing()
当我用读取以制表符分隔的文件xyz.txt
时
df.a = read.delim(coll$get("xyz.txt")$connection("r"))
它非常好用。然而,当我尝试用读取RDS文件abc.RDS
时
df.b = readRDS(coll$get("abc.RDS")$connection("r"))
我得到以下错误:
Error in readRDS(coll$get("abc.RDS")$connection("r")) :
unknown input format
从本地驱动器读取abc.RDS
工作正常。根据帮助页面,readRDS
接受";R对象保存到其中或从中读取的文件的连接或名称";。
我可以让它与readRDS(gzcon(coll$get("abc.RDS")$connection("rb")))
一起工作。
在help(readRDS)
中,我注意到了以下段落:
"当file
是文件名时,压缩由打开的连接处理,因此只有当file
是连接时,如果由连接处理,才可能进行压缩。因此,例如url
连接将需要封装在对gzcon
的调用中">