从网络抓取的数据被保存到列表中.然而,有些元素并不是在每个页面上都可用,导致列表具有不同长度的字符向量(如果所有数据都存在,则为4,如果不存在,则为3).
因为我需要保留列表的特定 struct ,所以我决定将相同的值附加到具有缺失数据的所有记录.
手动执行此操作是可行的,但是,当try 编写循环时,它最终会用追加的值替换缺少的值,从而产生长度为1的字符向量.
以下是一些示例数据:
things <- list(c("red", "small", "expensive", "car"),
c("big", "expensive", "bike"),
c("green", "big", "cheap", "bike"),
c("small", "expensive", "car"))
假设我们知道缺少第一条记录( colored颜色 )的所有东西都是蓝色的.手动添加它的效果与预期一样,例如,第二个记录返回("蓝色"、"大"、"昂贵"、"自行车").
c("blue", things[[2]])
但是,如果try 将其转换为循环以遍历所有数据,则基于字符长度的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]"蓝色"
非常感谢你的帮助!