我想从https://github.com/myaseen208/PakPMICS2018Data/加载PakPMICS2018bh.RData
数据,并使用以下代码引发错误:
library(RCurl)
PakPMICS2018bhURL <- "https://github.com/myaseen208/PakPMICS2018Data/raw/master/PakPMICS2018bh.RData"
load(url(PakPMICS2018bhURL))
加载错误(url(PakPMICS2018bhURL)): 输入的开头不是与从连接加载兼容的幻数
我想知道我的代码有什么问题。请帮忙。
答案 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
参数等于FALSE
,TRUE
或gz
保存的文件,代码在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"))