如何在 R 中根据满足条件保留列表的一部分?

问题描述 投票:0回答:1

我有一个从网站下载的小标题列表:

library(rvest)
ContractHistory <- read_html("https://overthecap.com/player/a-j-mccarron/3103")
ContractHistory <- ContractHistory %>% html_table(fill=TRUE)  

我希望根据其中存在的特定列名称“状态”保留其中一个标题。

为此,我(未成功)尝试过:

for (i in 1:length(ContractHistory)) {
  if("Status" %in% names(ContractHistory[['i']])==FALSE) {
    ContractHistory[['i']] <- NULL
  }
}  

对我来说,这表示检查第一个 tibble 是否具有列名状态,它确实如此,所以什么也不做。然后下一次迭代检查第二个小标题的列名称状态,发现它没有,这应该提示它删除该小标题(对于 3、4、5 也是如此)。但其中的某些内容没有被传递,原始列表保持不变。

r list
1个回答
0
投票

创建一个要保留哪些 tibbles 的布尔向量,然后使用

[]
:

进行子集化
ContractHistory[sapply(ContractHistory, \(x) "Status" %in% names(x))]

sapply()
此处迭代
ContractHistory
的元素并使用由
\(x)...
定义的匿名函数测试每个元素)

你可以看到:

> sapply(ContractHistory, \(x) "Status" %in% names(x))
[1]  TRUE FALSE FALSE FALSE FALSE
© www.soinside.com 2019 - 2024. All rights reserved.