Я получаю сообщение об ошибке, когда пытаюсь прочитать объект R из файла RDS, расположенного на платформе Arvados. Во-первых, я использую следующий код для подключения к 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
».