从URL列表中导入excel文件

时间:2018-06-02 04:00:00

标签: r import lapply

我的目标是创建一个直接从网址导入的数据框列表。我现在拥有的:

System.out.print(suit[0] + String.valueOf(facevalue[1]));

当我运行时,我收到错误:

  

xls2sep中的错误(xls,sheet,verbose = verbose,...,method = method,   :中级文件   'C:\用户\麦克\应用程序数据\本地的\ Temp \ Rtmpk9t4hG \ file308c4520306c.csv'   失踪!另外:警告消息:运行命令   “ “C:\ STRAWB〜1 \ perl的\ BIN \ PERL52〜1.EXE”   “C:/Users/Mike/Documents/R/win-library/3.3/gdata/perl/xls2csv.pl”   “https://minerals.usgs.gov/minerals/pubs/historical-statistics/ds140-chrom.xlsx”   “C:\用户\麦克\应用程序数据\本地的\ Temp \ Rtmpk9t4hG \ file308c4520306c.csv”   “1”'在file.exists中存在状态22错误(tfn):无效的“文件”   参数

我认为无效的文件参数意味着它无法找到该文件。不知道如何纠正它,因为网址肯定是正确的。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

为什么不做这样的事情(使用更强大的readxl包):

urls <- list('https://minerals.usgs.gov/minerals/pubs/historical-statistics/ds140-chrom.xlsx',
    'https://minerals.usgs.gov/minerals/pubs/historical-statistics/ds140-coppe.xlsx',
    'https://minerals.usgs.gov/minerals/pubs/historical-statistics/ds140-nicke.xlsx',
    'https://minerals.usgs.gov/minerals/pubs/historical-statistics/ds140-tin.xlsx',
    'https://minerals.usgs.gov/minerals/pubs/historical-statistics/ds140-tungs.xlsx')

# Download files
mapply(download.file, unlist(urls), sapply(urls, basename))

# Read Excel files into a list of data.frames
library(readxl);
lst <- lapply(sapply(urls, basename), read_excel);

这会产生文件的本地副本,但如果这不是交易破坏者,我建议使用readxl。说实话,保留源数据副本始终是一个好主意,以确保结果的可重复性和一致性。

答案 1 :(得分:2)

如果您想避免下载文件而不是导入文件,可以使用rio包。它有readxl(默认值)和openxlsx(非默认值)的包装,允许您从网址导入xlsx。我使用rio因为readxl doesn't have the ability to read urls

require(tidyverse)
require(rio)

urls <- list('https://minerals.usgs.gov/minerals/pubs/historical-statistics/ds140-chrom.xlsx',
             'https://minerals.usgs.gov/minerals/pubs/historical-statistics/ds140-coppe.xlsx',
             'https://minerals.usgs.gov/minerals/pubs/historical-statistics/ds140-nicke.xlsx',
             'https://minerals.usgs.gov/minerals/pubs/historical-statistics/ds140-tin.xlsx',
             'https://minerals.usgs.gov/minerals/pubs/historical-statistics/ds140-tungs.xlsx')


Myxlsx <- lapply(urls, FUN = rio::import)