如何在R中移除列表中列数超过2的表格元素?
解决方案:筛选或精准定位2列表格
一、从已爬取的列表中过滤出2列表格
你已经得到了包含所有表格的列表lineupdata,可以通过检查每个表格的列数,保留仅含2列的元素:
使用base R实现:
filtered_lineupdata <- Filter(function(tbl) ncol(tbl) == 2, lineupdata)
使用purrr包实现(更简洁):
如果已安装purrr包,也可以用keep函数:
library(purrr) filtered_lineupdata <- keep(lineupdata, ~ncol(.x) == 2)
二、爬取时直接定位目标表格(更高效)
既然你需要的表格带有class="s-table"属性,完全可以在提取表格前就精准定位这类元素,避免爬取不需要的宽格式表格:
修改你的爬取代码如下:
lineup <- remDr$findElement(using= 'class', 'lineup_table_group') lineup_html <- lineup$getPageSource() %>% unlist() lineuppage <- read_html(lineup_html) # 仅选择带有s-table类的表格,再提取数据 target_tables <- lineuppage %>% html_nodes("table.s-table") %>% html_table()
这样target_tables里就只会包含你需要的2列长格式表格,不会混入多列的宽格式表格。
内容的提问来源于stack exchange,提问作者Ellen
相关产品推荐
相关产品推荐

