从字符串r中删除重复字符

时间:2017-06-02 22:27:45

标签: r

我有一个正在读入的字符串向量,但是每个条目在我要删除的字符串的开头和结尾都有乱码。我的问题是,我不知道哪些字符是垃圾,直到它们出现在每个条目中。

即: 矢量包含:

nRsp; A810SS-Q1D-01“

nRsp; C5A19A60WESD04“

nRsp; 461961“

在这种情况下,nRsp;是开头的垃圾,“是结尾垃圾。垃圾值应该发生在相对于矢量开始和结束的同一个地方,但是我需要一些方法来先找到它们然后将它们删除。

谢谢!

1 个答案:

答案 0 :(得分:0)

如果你想要找到你的矢量的所有元素在开始和结束之前都有共同点的字符,你可以这样做:

library(purrr)
## Replicating the data
v = c("nRsp ;A810SS-Q1D-01 \"","nRsp ;C5A19A60WESD04 \"","nRsp ;461961 \"")
## Split each string into a vector
l = strsplit(v,"")
## Find the common parts at the start and end of all elements in the list
start = 1 
while(every(l,function(x) sum(x[1:start]==l[[1]][1:start])==start)){start=start+1}
end = 1
while(every(l,function(x) sum(rev(x)[1:end]==rev(l[[1]])[1:end])==end)){end=end+1}
## Remove the common 'garbage' from each element of the list
v2 = sapply(l,function(x) paste(x[start:(length(x)-end+1)],collapse=""))

返回:

[1] "A810SS-Q1D-01"  "C5A19A60WESD04" "461961"