R 读取一个 URL table 带有自由文本列

R read an URL table with a free text column

我想阅读 URL 中的文本 table。 table 确实有 3 列;第二列是一个字符列,里面有几个单词,单词周围有引号。 public 无法访问数据,这就是为什么我不能在这里给出 link,但我举了一个例子,说明当你打开 http link:[=13 时数据的样子=]

col1  "column second" 
col3
1 "a city name" 2323
20 second 4343
30 "third row" 43434

'col1','"column second"','col3' 是列名,这就是 header 在真实 URL 中的样子。我尝试了一些读取函数,例如 read_delim()、readline()、read.table 和 fread,但其中 none 可以正确读取数据。当我下载或 copy/paste 文件时,它没有任何问题,但当我想直接从 URL 读取时失败。问题出在第二列中的“”。例如,如果我设置 sep=" ",则数据的第一行有 5 列,第二行有 3 列,第三行有 4 列。

感谢您的帮助。

使用 scan 将数据读入字符向量 s 并将除前 3 个元素以外的所有元素重新转化为矩阵,然后使用这 3 个元素作为数据框 DF列名。最后转换DF的每一列的类型。我们已经使用 scan 读取末尾注释中显示的 Lines,但它也可以使用 scanfile= 参数从文件或连接读取。没有使用包。

s <- scan(text = Lines, what = "", quiet = TRUE)
DF <- setNames(as.data.frame(matrix(tail(s, -3),, 3, byrow = TRUE)), s[1:3])
DF[] <- lapply(DF, type.convert)

给予:

> DF
  col1 column second  col3
1    1   a city name  2323
2   20        second  4343
3   30     third row 43434

备注

以可复制的形式输入:

Lines <- 'col1  "column second" 
col3
1 "a city name" 2323
20 second 4343
30 "third row" 43434'

格洛腾迪克的回答很完美。对于那些可能有兴趣阅读 url 表格的人,我刚刚找到了另一个解决方案 https://www.r-bloggers.com/getting-data-from-an-online-source/

library(RCurl)
# The url link provided in the comment by Grothendieck
url <- 'https://raw.githubusercontent.com/CSSEGISandData/COVID- 
    19/master/archived_data/archived_daily_case_updates/02-12-2020_1020.csv'
myfile <- getURL(url, ssl.verifyhost=FALSE, ssl.verifypeer=FALSE)
mydat <- read.csv(textConnection(myfile), header=T)
head(mydat)

我的 url 在问题 post 中的问题是数据不是原始格式;就像 onedrive 或 google 驱动器中的文件。它可以放在另一个问题中;或者欢迎在此处分享您的答案或 link,以阅读此类数据。