从github直接加载.RData

时间:2019-06-14 16:34:31

标签: r url github load

我想从https://github.com/myaseen208/PakPMICS2018Data/加载PakPMICS2018bh.RData数据,并使用以下代码引发错误:

library(RCurl)
PakPMICS2018bhURL <- "https://github.com/myaseen208/PakPMICS2018Data/raw/master/PakPMICS2018bh.RData"
load(url(PakPMICS2018bhURL))
  

加载错误(url(PakPMICS2018bhURL)):         输入的开头不是与从连接加载兼容的幻数

我想知道我的代码有什么问题。请帮忙。

3 个答案:

答案 0 :(得分:2)

问题不在您的代码中,它应该可以正常工作。 例如,这通常从github加载Rdata文件

load(url("https://github.com/mawp/spict/raw/master/spict/data/pol.rda"))

您的问题来自您尝试打开的文件,它们使用save(version = 3)以R版本3.5中引入的序列化格式3保存。

  

R具有新的序列化格式(版本3),该格式支持ALTREP框架对象的自定义序列化。这些对象仍然可以格式2进行序列化,但是效率较低。序列化格式3还记录了未标记字符串的当前本机编码,并在以不同本机编码运行的R中反序列化时对它们进行了转换。格式3带有新的序列化魔术数字(RDA3,RDB3,RDX3)。可以通过save(),serialize()和saveRDS()中的version = 3选择格式3,但是格式2仍然是所有序列化和工作区保存的默认格式。 3.5.0之前的R版本无法读取格式3的序列化数据。

编辑

经过更多研究后,我认为这是一个错误(或功能?)。 对于使用compression参数等于FALSETRUEgz保存的文件,代码在R版本> = 3.5中可以正常工作。但是对于等于xz的压缩,这似乎在您的情况下不起作用。

有两种选择:要么使用gz压缩保存文件,要么使用@ user113156的答案中的解决方法。

答案 1 :(得分:1)

您可以尝试以下方法:

只需确保设置工作目录即可。

setwd("SET YOUR Working Directory - the file will download here")
working_directory <- getwd()
if (!file.exists("PakPMICS2018bh.RData")) {
  download.file(   "https://github.com/myaseen208/PakPMICS2018Data/raw/master/PakPMICS2018bh.RData",   "PakPMICS2018bhURL.RData")

  load(file.path(working_directory, "PakPMICS2018bhURL.RData"))
  } 

答案 2 :(得分:0)

如果可以read而不是load文件,这对我有用:

readRDS(url("https://.../FILENAME.rda"))