我有一个像
这样的字符串' A,X,Y,B,X,B'
现在我想在每个子字符串的末尾移动一个特定的字符串,如x
,保持其他元素的顺序相同,这样结果如下:
' A,Y,B,X; B,X'
为了达到结果,我首先尝试使用分号(;
)将字符串拆分为子字符串
> unlist(strsplit('a,x,b,y;x,b',';'))
[1] "a,x,b,y" "x,b"
然后再次使用逗号(;
)将子字符串拆分为字符串元素:
> strsplit(unlist(strsplit('x,b,y;x,b',';')),',')
[[1]]
[1] "a" "x" "b" "y"
[[2]]
[1] "x" "b"
但是我应该如何在每个子字符串的末尾移动元素"x"
,然后将字符串再次组合到所需的结果'a,y,b,x;b,x'
?
答案 0 :(得分:2)
取字符串,提取x为元素,取所有非x的元素,并将x放在末尾。然后将所有内容粘贴在一起。
x <- strsplit(unlist(strsplit('x,b,y;x,b',';')),',')
x_end <- lapply(x, function(x1) paste(c(x1[x1 != "x"], x1[x1 == "x"]), collapse = ","))
paste(unlist(x_end), collapse = ";")