使用R爬取网站时出现‘Input must be a vector, not an environment’错误如何解决?
解决R爬虫报错:! Input must be a vector, not an environment
这个错误通常是变量名冲突或包函数覆盖导致的,以下是几种可行的解决办法:
更换变量名
你当前用的变量a可能被环境中其他对象(比如误定义的环境变量)占用了,换个更具描述性的变量名就能规避:library(rvest) library(dplyr) simple <- read_html("https://en.wikipedia.org/wiki/Kargil_War") page_paragraphs <- simple %>% html_nodes("p") %>% html_text()明确指定包名调用函数
某些其他包可能包含和rvest/dplyr同名的函数,导致管道或节点选择逻辑混乱,直接用包前缀调用函数可以避免:simple <- rvest::read_html("https://en.wikipedia.org/wiki/Kargil_War") page_paragraphs <- simple %>% rvest::html_nodes("p") %>% rvest::html_text()清理环境后重新运行
先清空当前R环境的所有变量和加载的包,再重新加载依赖包执行代码:rm(list = ls()) detachAllPackages <- function() { basic.packages <- c("package:stats","package:graphics","package:grDevices","package:utils","package:datasets","package:methods","package:base") package.list <- search()[ifelse(unlist(gregexpr("package:",search()))==1,TRUE,FALSE)] package.list <- setdiff(package.list,basic.packages) if (length(package.list)>0) for (package in package.list) detach(package, character.only=TRUE) } detachAllPackages() library(rvest) library(dplyr) simple <- read_html("https://en.wikipedia.org/wiki/Kargil_War") page_paragraphs <- simple %>% html_nodes("p") %>% html_text()改用非管道写法排查问题
如果管道逻辑出了问题,拆分步骤可以定位具体环节:library(rvest) simple <- read_html("https://en.wikipedia.org/wiki/Kargil_War") p_nodes <- html_nodes(simple, "p") page_paragraphs <- html_text(p_nodes)
内容的提问来源于stack exchange,提问作者robot101
相关产品推荐
相关产品推荐

