Invalid 'path' argument with XLConnect
我正在尝试并未能在 R 版本 3.1.2 中完成以下过程:
1 2 3 4 5 6 7 8 9 10 11 | library(RCurl) library(XLConnect) yr <- substr(Sys.Date(), 1, 4) mo <- as.character(as.numeric(substr(Sys.Date(), 6, 7)) - 1) temp <- tempfile() temp <- getForm("http://strikemap.clb.org.hk/strikes/api.v4/export", FromYear ="2011", FromMonth ="1", ToYear = yr, ToMonth = mo, `_lang` ="en") CLB <- readWorksheetFromFile(temp, sheet=1) unlink(temp) |
我已经能够手动导出请求的数据集,然后使用相同的 readWorksheetFromFile 语法从本地目录将其读入 R。我现在的目标是在 R 中完成所有工作。对 API 的调用似乎有效(感谢早期的一些帮助),但是当我尝试获取结果时,该过程在下一步失败。这是发生的事情:
1 2 | > CLB <- readWorksheetFromFile(temp, sheet=1) Error in path.expand(filename) : invalid 'path' argument |
对我做错了什么或坏了什么有什么想法吗?
事实证明,问题根本不在于 XLConnect。根据 Hadley 的提示,我需要将查询结果保存到 API 中,然后再将它们读回 R 中,我已经(几乎)使用以下代码完成了该过程:
1 2 3 4 5 6 7 8 | library(httr) library(readxl) yr <- substr(Sys.Date(), 1, 4) mo <- as.character(as.numeric(substr(Sys.Date(), 6, 7)) - 1) baseURL <- paste0("http://strikemap.clb.org.hk/strikes/api.v4/export?FromYear=2011&FromMonth=1&ToYear=", yr,"&ToMonth=", mo,"&_lang=en") queryList <- parse_url(baseURL) clb <- GET(build_url(queryList), write_disk("clb.temp.xlsx", overwrite=TRUE)) CLB <- read_excel("clb.temp.xlsx") |
创建的对象 CLB 包含所需数据,但有一个故障:第一列中的日期未正确读取。如果我在 Excel 中打开"clb.temp.xlsx",它们会按预期显示(例如,如果我单击单元格,则为 2015 年 6 月 30 日或 2015 年 6 月 30 日)。但是
如果我在最后一步使用
1 2 | > CLB <- readWorksheetFromFile("clb.temp.xlsx") Error in (function (classes, fdef, mtable) : unable to find an inherited method for function ‘readWorksheet’ for signature ‘"workbook","missing"’ |
我将使用 read_excel 搜索问题的解决方案,如果找不到,我将创建一个新问题。