R语言如何循环为数据框列表有条件添加NA占位行
R批量处理列表内数据框补行方案
你原来的代码有两个核心问题:一是lapply没有定义逐元素处理的函数,没法指代当前遍历到的数据框;二是相等判断误把赋值符=当成了比较符==。
直接用下面的代码就能完成批量处理:
listallht_allwk <- lapply(listallht_allwk, function(df) { if (nrow(df) == 5) { df[nrow(df) + 1, ] <- NA } df })
逻辑说明
lapply会逐个取出列表里的数据集,传入你定义的匿名函数里,这里函数参数写的df就指代当前正在处理的单个数据框,直接传给nrow()就能拿到对应数据集的行数- 逐元素判断逻辑:如果当前数据框行数为5,就新增第6行填充
NA;行数为6的数据集直接跳过不做修改 - 函数最后直接返回处理完的
df,lapply会自动把所有处理完的数据集按原顺序拼成新列表,赋值回原变量就完成全部52个数据集的处理
处理完所有数据集行数统一为6之后,你后续做批量新增列的操作就不会出现行数对齐的报错了。
内容的提问来源于stack exchange,提问作者Lheg
相关产品推荐
相关产品推荐

