2017-06-02 9 views
-1

読み込み中の文字列のベクトルがありますが、削除する文字列の先頭と末尾にすべてのエントリにガベージ文字があります。私の問題は、各エントリに表示されるまで、どのキャラクタがゴミであるかわからないことです。文字列から重複する文字を削除するr

すなわち: ベクトルが含まれています

nRsp;であり、A810SS-Q1D-01 "

nRsp; C5A19A60WESD04"

nRsp; 461961」

この場合、nRspで冒頭のゴミと「最後のごみです。ゴミ値は、ベクターの開始位置と終了位置を基準に同じ場所で発生するはずですが、まずそれらを見つけて削除する方法が必要です。

ありがとうございます!

+0

最初はいつも 'nRsp;'ですか? – hwnd

+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" 
関連する問題