R语言如何对逗号分隔的字符串元素按升序排序得到预期输出
问题原因
你的变量a、b均为单个包含逗号+空格分隔内容的字符串,并非由各独立元素组成的向量。直接调用sort()是对整个字符串做排序,不会处理内部的子元素,因此无法得到预期结果。
解决方法
需要先拆分字符串得到各独立子元素,排序后再拼接回单个逗号分隔的字符串,具体实现代码如下:
针对给定变量的实现
# 处理变量a a <- c("MN, OP, AB") a_elements <- unlist(strsplit(a, split = ", ")) a_out <- paste(sort(a_elements), collapse = ",") # 处理变量b b <- c("MN, O P, A B") b_elements <- unlist(strsplit(b, split = ", ")) b_out <- paste(sort(b_elements), collapse = ",")
运行后输出结果和预期完全一致:
print(a_out) # [1] "AB,MN,OP" print(b_out) # [1] "A B,MN,O P"
通用封装
如果需要批量处理同类字符串,可以封装为自定义函数直接调用:
sort_comma_sep_str <- function(input_str) { elements <- unlist(strsplit(input_str, split = ", ")) paste(sort(elements), collapse = ",") } # 调用示例 a_out <- sort_comma_sep_str(a) b_out <- sort_comma_sep_str(b)
内容的提问来源于stack exchange,提问作者san1
相关产品推荐
相关产品推荐

