R语言如何按递增序号替换字符串向量中的NA值并统计填充数量
R 按顺序计数填充字符串向量的NA值
实现代码
直接定位NA位置,按出现顺序生成递增序号拼接后替换即可,完全匹配要求的填充规则:
# 示例输入向量 str_vec <- c("A", "B", "C", NA, NA, "D", "E", NA, "F", "G", NA, NA) # 标记所有NA的位置 na_flag <- is.na(str_vec) # 按规则生成填充值替换NA,这里显式调用paste函数,符合要求的拼接逻辑 str_vec[na_flag] <- paste("NA_VALUE_", seq_len(sum(na_flag)), sep = "")
如果习惯用简写,paste0("NA_VALUE_", seq_len(sum(na_flag)))和上面的paste写法效果完全一致。
运行结果
执行代码后打印向量,输出和预期完全匹配:
> str_vec [1] "A" "B" "C" "NA_VALUE_1" "NA_VALUE_2" "D" [7] "E" "NA_VALUE_3" "F" "G" "NA_VALUE_4" "NA_VALUE_5"
逻辑说明
is.na(str_vec)会返回和原向量等长的布尔向量,值为TRUE的位置对应所有缺失值NA的所在位置sum(na_flag)直接统计向量中NA的总个数,seq_len()会生成从1开始、长度等于NA总数的连续整数,顺序和NA出现的先后顺序完全对应- 拼接完成后直接赋值给原向量标记为NA的位置,即可完成批量填充
内容的提问来源于stack exchange,提问作者user113156
相关产品推荐
相关产品推荐

