关于 r:XLConnect 的”路径”参数无效 | 珊瑚贝

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

对我做错了什么或坏了什么有什么想法吗?

  • 我做到了,我得到了基本相同的错误:Error in file.exists(path) : invalid ‘file’ argument。
  • 我认为您错误地认为 getForm() 的结果是一个文件。
  • 啊,好吧。它是什么,HTML?如果我在 getForm() 调用生成的临时文件上运行 str(),我会看到它是一个由无法识别的元素组成的原子向量。那么我如何翻译我所追求的表格中的那个向量呢?或者有没有更好的方法可以到达那里?
  • 您需要将 getForm() 的结果保存到文件中…
  • 谢谢!我现在(几乎)已经让这个工作了。我将在答案中发布详细信息,并在必要时针对剩余的故障开始一个新问题。


事实证明,问题根本不在于 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 日)。但是 read_excel() 将它们读取为不以明显方式跟踪这些日期的数字(例如,2015-06-30 的 42185)。我尝试通过指定它们是调用 read_excel 中的日期来解决此问题,但这会产生一长串关于预期日期但获取这些数字的警告。

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

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

  • 我能够使用以下代码行将数字转换为 R 中的正确日期:CLB$Date <- as.Date(CLB$Date, format =”%Y-%m-%d”, origin =”1899-12-30″)。我不知道为什么该起源日期有效并且必须通过反复试验来弄清楚,但它确实存在。


来源:https://www.codenong.com/31220677/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_9082.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?