R语言如何新增仅指定ID列有值、其余列均为NA的行
原代码效率低的核心原因是逐行修改数据框时,R会每次全量拷贝整个数据框,新增n行就会触发n次全量拷贝,数据量越大性能损耗越明显。推荐使用批量构造后一次性合并的方案,效率提升可达数百倍。
基础R实现(无需依赖第三方包)
# 批量构造待追加的空行 new_rows <- as.data.frame(matrix(NA, nrow = length(missing), ncol = ncol(df))) # 保持列名和原数据框一致 colnames(new_rows) <- colnames(df) # 给第一列赋值缺失ID new_rows[, 1] <- missing # 一次性合并到原数据框 df <- rbind(df, new_rows)
dplyr实现(语法更简洁)
如果使用tidyverse生态的工具,可直接用add_row函数完成操作,未指定的列会自动填充NA:
library(dplyr) df <- df %>% add_row(!!sym(colnames(df)[1]) := missing)
提示:如果原数据框第一列为因子类型,需先确保
missing中的ID包含在因子的levels中,或先将第一列转换为字符类型,避免赋值时生成意外的NA。
内容的提问来源于stack exchange,提问作者Jub
相关产品推荐
相关产品推荐

