从网络爬虫中获取的数据被保存到一个列表中。然而,有些元素在每个页面上都不可用,导致列表具有不同长度的字符向量(如果所有数据都存在,则为4,否则为3)。
由于我需要保留列表的特定结构,所以我决定将相同的值附加到所有缺失数据的记录中。
手动这样做是有效的,但是当尝试编写循环时,它最终会用附加的值替换缺失的值,导致字符向量长度为1。
以下是一些示例数据:
things <- list(c("red", "small", "expensive", "car"),
c("big", "expensive", "bike"),
c("green", "big", "cheap", "bike"),
c("small", "expensive", "car"))
假设我们知道每个缺失第一条记录(颜色)的物品都是蓝色的。手动添加它可以按预期工作,例如对于第二条记录返回("blue" "big" "expensive" "bike")。
c("blue", things[[2]])
然而,尝试将其转换为循环以遍历所有数据,基于字符长度的ifelse语句,它会用“blue”替换整个向量而不是附加它。
all_things <- list()
for(i in seq_along(things)) {
all_things[i] <- ifelse(length(things[[i]]) == 3, c("blue", things[[i]]), things[i])
}
运行循环返回:
[[1]] [1] "红色" "小型" "昂贵的" "汽车"
[[2]] [1] "蓝色"
[[3]] [1] "绿色" "大型" "便宜的" "自行车"
[[4]] [1] "蓝色"
非常感谢您的帮助!