html_nodes()当作为可执行的RScript运行时,该函数失败如下,但在交互式运行时成功.有人知道在跑步中会有什么不同吗?
交互式运行使用全新会话运行,源语句是第一次运行.
$ ./test-pdp.R
>
> ################################################################################
> # Setup
> ################################################################################
> suppressPackageStartupMessages(library(plyr))
> suppressPackageStartupMessages(library(dplyr))
> suppressPackageStartupMessages(library(stringr))
> suppressPackageStartupMessages(library(rvest))
> suppressPackageStartupMessages(library(httr))
>
>
> read_html("http://google.com") %>%
+ html_nodes("div") %>%
+ length()
Error in as.vector(x, "list") :
cannot coerce type 'environment' to vector of type 'list'
Calls: %>% ... <Anonymous> -> lapply -> as.list -> as.list.default
Execution halted
Run Code Online (Sandbox Code Playgroud)
然而,当以source()交互方式运行时它会成功:
> source("/Users/a6001389/Documents/projects/hottest-deals-page-scrape/src/test-pdp.R", echo=TRUE)
> #!/usr/bin/RScript
> options(echo=TRUE)
> ################################################################################
> # Setup
> ####################################################### .... [TRUNCATED]
> suppressPackageStartupMessages(library(dplyr))
> suppressPackageStartupMessages(library(stringr))
> suppressPackageStartupMessages(library(rvest))
> suppressPackageStartupMessages(library(httr))
> read_html("http://google.com") %>%
+ html_nodes("div") %>%
+ length()
[1] 17
Run Code Online (Sandbox Code Playgroud)
谢谢你,马特
添加行:
library(methods)
Run Code Online (Sandbox Code Playgroud)
根据Hadley Wickham对原始问题的评论确实解决了这个错误.为什么它解决了这个错误,我不知道.但我发布了一个答案,所以这里有一个容易引用的解决方案.如果,为什么这解决了问题贴出来,我会接受的答案.
将@ mekki-macaulay下面的评论添加到文本中,因为它确实增加了一些清晰度:
这个主题可能会对它有所了解.似乎在某些情况下,RSCRIPT默认情况下不加载package :: methods,而交互式会话默认加载它.似乎"when"不清楚,但显式调用所有RSCRIPT执行的库(方法)似乎是安全的选择:可以交互使用包,但Rscript会出错
| 归档时间: |
|
| 查看次数: |
918 次 |
| 最近记录: |