如何在R语言中通过Box共享链接读取表格文件?
解决Box.com共享链接无法直接用
read.table读取文本文件的问题 嘿,我完全懂你的困扰!Box的默认共享链接是指向网页预览界面的,不是直接的文件资源,所以你直接用read.table()去读的话,自然会拿到一堆HTML代码。别慌,这里有几个实用的解决办法:
方法1:获取Box的直接下载链接
这是最直接的方式:
- 打开你的Box文件共享页面(就是你现在用的那个链接)
- 找到页面上的「下载」按钮,右键点击它,选择「复制链接地址」
- 把复制到的链接替换掉你原来的URL,再用
read.table()读取就行
比如复制后的链接应该是类似这样的:
WES.ped.exp <- read.table("https://ucsf.box.com/shared/static/tht30egddqjqlq3koucqy7rhtzkh3ydi.txt")
方法2:用curl包自动处理跳转下载
如果不想手动复制链接,可以用curl包来帮你自动跟随跳转并下载文件:
# 先安装curl包(如果没装过的话) install.packages("curl") library(curl) # 创建临时文件存储下载的内容 temp_file <- tempfile(fileext = ".txt") # 下载文件,followlocation参数让请求自动跳转到真实文件地址 curl_download("https://ucsf.box.com/s/tht30egddqjqlq3koucqy7rhtzkh3ydi", destfile = temp_file, handle = new_handle(followlocation = TRUE)) # 读取临时文件 WES.ped.exp <- read.table(temp_file)
方法3:用httr包直接读取内容
另一个选项是用httr包发送请求,获取文件的文本内容后直接读取:
# 安装httr包(如果没装过) install.packages("httr") library(httr) # 发送请求并跟随跳转,获取文本内容 response <- GET("https://ucsf.box.com/s/tht30egddqjqlq3koucqy7rhtzkh3ydi", followlocation = TRUE) file_content <- content(response, as = "text") # 直接从文本内容读取数据 WES.ped.exp <- read.table(text = file_content)
这些方法的核心都是绕开Box的预览页面,直接获取到真实的文本文件资源。我自己用方法1和方法2最多,亲测有效!
内容的提问来源于stack exchange,提问作者Carmen Sandoval
相关产品推荐
相关产品推荐

