如何在R语言中基于向量无字典替换表格非空白单元格
实现思路
你需要的效果可以通过按行优先顺序替换非空单元格实现,不需要构建映射字典:先提取原始表格中所有非NA/非空白的单元格位置,按行优先排序后依次填入向量G的对应元素即可。
R实现代码
第一步:构造原始数据
# 构造原始表格 df <- data.frame( ID = c("EL", "GN", "SF"), Sire = c("SF", "SF", "SF"), Dam = c("NA", "UJ", "NA"), stringsAsFactors = FALSE ) # 定义目标替换向量 G <- c("10325", "6788" ,"1140","6788","6789" , "14140", "6788" )
第二步:按规则替换内容
# 定位所有非空单元格,按行优先排序 non_empty_pos <- which(!df %in% c(NA, ""), arr.ind = TRUE) non_empty_pos <- non_empty_pos[order(non_empty_pos[,1], non_empty_pos[,2]), ] # 依次替换为G的元素 df[non_empty_pos] <- G
提示:如果你的原始表格中空白值是R原生的NA类型而非字符串"NA",定位代码可以简化为
non_empty_pos <- which(!is.na(df), arr.ind = TRUE)
输出验证
运行print(df)即可得到目标结果:
ID Sire Dam 1 10325 6788 NA 2 1140 6788 6789 3 14140 6788 NA
内容的提问来源于stack exchange,提问作者Siavash
相关产品推荐
相关产品推荐

