XLConnect 的 'path' 参数无效

Invalid 'path' argument with XLConnect

我正在尝试并未能在 R 版本 3.1.2 中完成以下过程:

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 的调用似乎有效 (),但是当我尝试获取结果时,该过程在下一步失败。事情是这样的:

> CLB <- readWorksheetFromFile(temp, sheet=1)
Error in path.expand(filename) : invalid 'path' argument

对我做错了什么或哪里出了问题有什么想法吗?

事实证明,问题根本不在于 XLConnect。根据 Hadley 的提示,我需要将查询结果保存到 API 文件中,然后再将它们读回 R,我已经(几乎)使用以下代码完成了该过程:

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-06-30,如果我单击该单元格,则为 6/30/2015)。但是 read_excel() 将它们解读为数字,这些数字不会以明显的方式跟踪这些日期(例如,42185 表示 2015-06-30)。我尝试通过在 read_excel 的调用中指定它们是日期来解决这个问题,但这会产生一长串关于预期日期但得到这些数字的警告。

如果我在最后一步使用 readWorkSheetFromFile() 而不是 read_excel,会发生以下情况:

> 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 搜索问题的解决方案,如果找不到,我将创建一个新问题。