在子字符串列表的末尾移动特定的字符串元素

时间:2017-12-01 10:11:21

标签: r substring

我有一个像

这样的字符串
  

' 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'

1 个答案:

答案 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 = ";")