从网络抓取的数据被保存到列表中.然而,有些元素并不是在每个页面上都可用,导致列表具有不同长度的字符向量(如果所有数据都存在,则为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]"蓝色"

非常感谢你的帮助!

推荐答案

你可以用lapply来判断你的情况,即

lapply(things, \(i) if(length(i) == 3) {c('blue', i)}else{i})

[[1]]
[1] "red"       "small"     "expensive" "car"      

[[2]]
[1] "blue"      "big"       "expensive" "bike"     

[[3]]
[1] "green" "big"   "cheap" "bike" 

[[4]]
[1] "blue"      "small"     "expensive" "car"      

R相关问答推荐

创建重复删除的唯一数据集组合列表

以R为基数排列奇数个图

ggplot 2中的地块底图(basemaps_gglayer()不起作用)

合并DFS列表并将索引提取为新列

如何同时从多个列表中获取名字?

将. xlsx内容显示为HTML表

如何通过ggplot2添加短轴和删除长轴?

使用for循环和粘贴创建多个变量

如何在PackageStatus()中列出&q;不可用的包&q;?

正在导出默认的RStudio主题,还是设置括号 colored颜色 ?

如何阻止围堵地理密度图?

如何根据未知数的多列排除重复行

随机 Select 的非NA列的行均数

基于R中的辅助向量中的值有条件地连接向量中的字符串

主题(Legend.key=Element_RECT(Fill=&Quot;White&Quot;))不起作用

排序R矩阵的行和列

子样本间系数检验的比较

从两个数据帧中,有没有办法计算R中一列的唯一值?

如何在R中添加标识连续日期的新列

reshape 数据帧-基于组将行转换为列