如何将键值对字符串(如响应头)解析为命名字符向量?
解析键值对字符串为命名字符向量(R语言)
给定输入字符串:
input <- "val1=A; val2=B; val3=C"
要得到命名字符向量c(val1 = "A", val2 = "B", val3 = "C"),可以用以下几种方法实现:
方法一:基础R原生实现
无需额外安装包,用原生字符串处理函数即可完成:
# 按分号加空格拆分字符串,得到单个键值对 kv_pairs <- strsplit(input, "; ")[[1]] # 将每个键值对按等号拆分,得到键和值的列表 kv_split <- strsplit(kv_pairs, "=") # 提取所有键和值 keys <- sapply(kv_split, function(x) x[1]) values <- sapply(kv_split, function(x) x[2]) # 构建命名向量 result <- setNames(values, keys)
运行后查看结果:
result # 输出: # val1 val2 val3 # "A" "B" "C"
方法二:用stringr包简化操作
如果习惯用正则提取功能,stringr包能让代码更简洁:
library(stringr) # 提取所有等号前的键 keys <- str_extract_all(input, "\\w+(?==)")[[1]] # 提取所有等号后的值 values <- str_extract_all(input, "(?<==)\\w+")[[1]] # 构建命名向量 result <- setNames(values, keys)
两种方法得到的结果与期望输出完全一致,都是带有命名属性的字符向量。
内容的提问来源于stack exchange,提问作者Jeff Bezos
相关产品推荐
相关产品推荐

