我有一些可以在Mac上运行的R代码,但是其他人正在尝试在Windows上运行它,但似乎不起作用。我一直在使用的代码是:
for(i in 1:length(SNPs.needproxies)){
print(i)
system(paste0("curl -k -X GET 'https://ldlink.nci.nih.gov/LDlinkRest/ldproxy?var=",SNPs.needproxies[i],"&pop=MXL&r2_d=r2&token=",token,"' > ", dir,"out.",SNPs.needproxies[i],".txt"))
}
如果我尝试在Windows上运行此程序,则会收到错误消息
不支持或禁用https”。
我们缩小了问题的范围,因为似乎地址中的单引号应替换为双引号。但是,由于这是paste0()
函数内的功能,因此它认为还有其他内容,因此我们认为使用反斜杠将双引号转义,即,\"https://ldlink.nci.nih.gov/LDlinkRest/ldproxy?var=",SNPs.needproxies[i],"&pop=MXL&r2_d=r2&token=",token,"\"
这种工作方式是提供所需的输出,但应该将其打印到名为dir / out.file.txt之类的文件中,但不会执行此部分。
SNPs.needproxies是:
SNPs.needproxies <- c("rs709692","rs9659182","rs13064990","rs11130017","rs9832922" ,"rs36120363","rs4727815","rs7994762","rs72772387")
我有该网站的令牌,但无法共享该令牌,但它存储在称为令牌的对象中。
注意到Windows上的curl要求将https地址括在双引号(而不是单引号)中之后,我将完全避免其余的管道问题-o
,如果您坚持编写,则可以使用curl中的选项指定要写入结果的文件发出命令:
system(paste0("curl -k -X GET \"https://ldlink.nci.nih.gov/LDlinkRest/ldproxy?var=", SNPs.needproxies[i], "&pop=MXL&r2_d=r2&token=", token, "\" -o out.", SNPs.needproxies[i], ".txt"))
另外,R有一些基于curl的软件包,这些软件包可以处理所有这些细节,例如curl
:
library(curl)
url <- sprintf("https://ldlink.nci.nih.gov/LDlinkRest/ldproxy?var=%s&pop=MXL&r2_d=r2&token=%s", SNPs.needproxies[i], token)
curl_download(url, sprintf("out.%s.txt", SNPs.needproxies[i]))
您也可以file.download()
按照Konrad的建议在这种情况下使用:
url <- sprintf("https://ldlink.nci.nih.gov/LDlinkRest/ldproxy?var=%s&pop=MXL&r2_d=r2&token=%s", SNPs.needproxies[i], token)
download.file(url, sprintf("out.%s.txt", SNPs.needproxies[i]))
您也可以GET()
从httr
库中使用:
library(httr)
u <- "https://ldlink.nci.nih.gov/LDlinkRest/ldproxy"
q <- list(var = SNPs.needproxies[i],
pop = "MXL",
r2_d = "r2",
token = token)
f <- sprintf("out.%s.txt", SNPs.needproxies[i])
GET(url = u, query = q, write_disk(f))
注意,似乎存在的R包专门用于连接到这个API这里。在您的情况下,代码为:
library(LDlinkR)
LDproxy(snp = SNPs.needproxies[i],
pop = "MXL",
r2d = "r2",
token = token,
file = sprintf("out.%s.txt", SNPs.needproxies[i]))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句