R语言中将字符串向量条目替换为预设数值的实现咨询
R语言向量匹配替换实现方案
方法1:基础R实现(无需额外依赖包)
通用性最强,不需要安装任何第三方包即可运行:
# 输入原始向量 vec1 = c("AAA","AA+","","D") vec2 = c("AAA","","D","AA+") # 定义字符到数值的映射规则 map_rule <- c("AAA" = 1, "AA+" = 2, "D" = 3) # 封装可复用的转换函数 convert_vec <- function(input_vec) { # 先匹配映射规则 res <- map_rule[input_vec] # 未匹配到的内容和空字符串统一替换为0 res[is.na(res) | input_vec == ""] <- 0 # 转为普通向量输出 return(as.vector(res)) } # 生成目标向量 v1 <- convert_vec(vec1) v2 <- convert_vec(vec2)
运行后v1输出结果为 1 2 0 3,v2输出结果为 1 0 3 2,完全符合要求。
方法2:dplyr包实现(适合tidyverse生态用户)
如果日常使用tidyverse工具链,可以用recode函数简化逻辑:
library(dplyr) convert_vec_dplyr <- function(input_vec) { recode(input_vec, "AAA" = 1, "AA+" = 2, "D" = 3, .default = 0) } v1 <- convert_vec_dplyr(vec1) v2 <- convert_vec_dplyr(vec2)
说明:
.default参数会自动将所有未匹配到映射规则的取值(包括空字符串)统一替换为0,代码更简洁。
内容的提问来源于stack exchange,提问作者Debojit Roy
相关产品推荐
相关产品推荐

