我有一个从网站下载的小标题列表:
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 也是如此)。但其中的某些内容没有被传递,原始列表保持不变。
创建一个要保留哪些 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