You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用rvest爬取的DataFrame无法通过subset函数筛选,报“对象未找到”错误求助

rvest爬取的DataFrame无法通过subset函数筛选,报“对象未找到”错误求助

嗨,我来帮你搞定这个问题!你遇到的核心问题其实是**html_table()返回的不是单个数据框,而是一个列表**——因为网页里可能存在多个表格,rvest会把所有表格都装进列表里返回,而你直接用subset()去操作列表,自然找不到对应的列名啦。

你可以先验证一下:在代码里加一行class(table),运行后会发现结果是"list",而不是你以为的"data.frame"。这就是为什么用iris测试没问题(iris本身就是数据框),但爬取的表格不行。

解决方法很简单,只需要先从列表里提取出你需要的那个数据框就行:

步骤1:提取目标数据框

网页里看起来只有一个表格,所以直接取列表的第一个元素就好,用双重方括号[[1]]来提取(单括号[1]还是返回列表,双重括号才会返回里面的data.frame):

library(rvest)
html_content <- read_html("https://ki.ujep.cz/cs/historie/")
# 提取列表中的第一个表格,转为数据框
df <- html_table(html_content, header = TRUE)[[1]]

步骤2:用subset筛选数据

现在df就是标准的数据框了,再用subset()就不会报错啦:

print(subset(df, subset = `Dosud na UJEP?` == "ANO"))

额外提示

如果网页里有多个表格,你可以先用str(table)查看列表里每个元素的结构,找到你需要的表格对应的索引,再用[[索引]]提取就行。

备注:内容来源于stack exchange,提问作者Игорь Блохин

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 07:34:29