2016-08-02 10 views
4

Rの指定された文字以外のすべてをgsub()するにはどうすればよいですか?私は次の文字列を持っている私の問題でgsub()指定された文字を除くすべて?

...

"the quick brown fox jumps over a lazy dog" 

は、私はR「」と「O」を除くすべての文字を削除することによってで新しい文字列を生成し、次の出力を取得する必要が...

"roooro" 

すべての文字が小文字であると仮定します。私は試しました...

gsub(!"r","",gsub(!"o","",str1)) 

しかし、 '!'動作しません。

+1

のパターンを参照してくださいを作成することができます [*カンマ「」またはセミコロンを除くすべての文字に一致しますどのような正規表現';'?](http://stackoverflow.com/questions/1409162/what-regex-will-match-every-character-except-comma-or-semi-colon)。 –

+0

実際には、キャラクターと実際の要件(ベクトルの使用)がこの質問を異なるものにしているので、私は上のポストの正確な欺瞞とは言いません。 –

答えて

5

の中に^を使用して、ro以外のすべての文字と一致させる必要があります。ここで、[^ro]+は、 'r'または 'o'ではない1つ以上の文字をマッチングし、空白("")で置き換えることを意味します。

gsub("[^ro]+", "", str1) 
#[1] "roooro" 

我々は値のベクトルを持っている場合、我々はpaste

v1 <- c("r", "o") 
gsub(paste0("[^", paste(v1, collapse=""), "]+"), "", str1) 
#[1] "roooro" 
+0

ありがとうarkun ...これは私のために働く...しかし、rsと 'o'をgsubコマンドで直接指定するのではなく、ベクトルとして指定する方法があります。 – Gaurav

+0

@Gaurav私は値のベクトルを持っていると信じています。この場合、 'paste'を使ってください(投稿を更新しました) – akrun

+0

FYI:'貼り付け 'のアプローチでは、 ']'、 '' \ ''、 '記号を使って、何か違うことを意味したり、クラスを時期尚早に閉じたりすることができます。 –

関連する問題