问题描述
我想从网络上读取几个csv文件,并将数据保存到数据框中。 如我所见,如果文件在我的计算机上,这将非常容易,但是我并不总是希望下载文件。
示例:
"https://www.football-data.co.uk/mmz4281/1819/F1.csv","https://www.football-data.co.uk/mmz4281/1718/F1.csv","https://www.football-data.co.uk/mmz4281/1617/F1.csv","https://www.football-data.co.uk/mmz4281/1516/F1.csv","https://www.football-data.co.uk/mmz4281/1415/F1.csv","https://www.football-data.co.uk/mmz4281/1314/F1.csv","https://www.football-data.co.uk/mmz4281/1213/F1.csv","https://www.football-data.co.uk/mmz4281/1112/F1.csv","https://www.football-data.co.uk/mmz4281/1011/F1.csv"
这些是CSV文件。也许可以通过函数或循环来实现,但是我不知道如何。
也许你可以帮助我。
问候
解决方法
从网络中读取文件就像从文件系统中读取文件一样容易。您只需将URL而不是文件路径传递到readr::read_csv()
(您用readr
标记了问题,所以我想您要使用它)。
假设您的文件位于矢量中:
files <- c("https://www.football-data.co.uk/mmz4281/1819/F1.csv","https://www.football-data.co.uk/mmz4281/1718/F1.csv","https://www.football-data.co.uk/mmz4281/1617/F1.csv","https://www.football-data.co.uk/mmz4281/1516/F1.csv","https://www.football-data.co.uk/mmz4281/1415/F1.csv","https://www.football-data.co.uk/mmz4281/1314/F1.csv","https://www.football-data.co.uk/mmz4281/1213/F1.csv","https://www.football-data.co.uk/mmz4281/1112/F1.csv","https://www.football-data.co.uk/mmz4281/1011/F1.csv")
您可以使用readr::read_csv
来读取特定文件,并使用purrr::map_dfr
将它们组合成一个数据帧:
df <- purrr::map_dfr(files,readr::read_csv)
此操作对files
的内容进行迭代,将readr::read_csv
应用于每个元素,然后将它们按行组合到一个数据帧中(因此dfr
)。