2017-02-06 14 views
1

私は下のコードから得た単語のリストを持っています。文字列の最後に省略記号を削除するには

このリストの文字列の中には、削除したい最後に省略記号があります。ここで私は、このコードにはない

gsub("[…]", "", tags_vector[5]) 
#[1] "#b…" 

、私はコードを使用して、 gsubを使用して、この第五要素から省略記号を削除しようとしています

tags_vector[5] 
#[1] "#b…" 

class(tags_vector[5]) 
#[1] "character" 

このリストの5番目の要素を印刷すると、そのクラス私は "#b ..."を出力します。しかし、私が直接、第五要素の値を入れて同じコードで、それは

gsub("[…]", "", "#b…") 
#[1] "#b" 

は私も変数x1tags_vector[5]の値を入れて試してみましたgsub()コードでそれを使用しようとしたが、以下のように正常に動作し、それまだ働いていない。

+2

'tags_vector'を提供できますか?それは単純な 'x < - " #b ... "'で私のために働くので、あなたのベクトルと関係していると思います。 – LAP

+0

https://ideone.com/61hWhtを参照してください。うまくいくようです。ところで、省略記号はASCIIではないので、あなたはstringr 'str_replace_all'を試してみることができます:' library(stringr) ' - >' str_replace_all(tags_vector [5]、 "..."、 "") ' –

+0

実際にはUnicode問題。 tags_vector [5]の印字がすでに文字を変更している可能性があります(例えば、省略記号には2つの異なるユニコードがあります:[2026](http://www.fileformat.info/info/unicode/char/2026/index。 htm)と[22EF](http://www.fileformat.info/info/unicode/char/22EF/index.htm)を参照してください)。これはまた、直接gsubが機能する理由を説明します。あなたは 'gsub(gsub(" [#b] "、" "、tags_vector [5])、" "、tags_vector [5])'を試すことができますか? – takje

答えて

0

これはUnicodeの問題である可能性があります。 R(スタジオ)では、すべての文字が均等に作成されるわけではありません。

私は、再現性の例を作成しようとしました:

# create the ellipsis from the definition (similar to your tags_used) 
> ell_def <- rawToChar(as.raw(c('0xE2','0x80','0xA6'))) # from the unicode definition here: http://www.fileformat.info/info/unicode/char/2026/index.htm 
> Encoding(ell_def) <- 'UTF-8' 
> ell_def 
[1] "…" 
> Encoding(ell_def) 
[1] "UTF-8" 

# create the ellipsis from text (similar to your string) 
> ell_text <- '…' 
> ell_text 
[1] "…" 
> Encoding(ell_text) 
[1] "latin1" 

# show that you can get strange results 
> gsub(ell_text,'',ell_def) 
[1] "…" 

この例の再現性は、ロケールに依存する可能性があります。私の場合は、WindowsでUTF-8にロケールを設定できないため、Windows-1252で作業します。 this stringi sourceによれば、 "RはASCII、UTF-8、およびあなたのプラットフォームのネイティブエンコーディングの文字列を平和的に共存させます"。上の例が示すように、これは時々相反する結果をもたらすことがあります。

出力は基本的に同じですが、バイトレベルではありません。

この例をR端末で実行すると、同様の結果が得られますが、明らかに省略記号はドットとして表示されます: "。"

たとえば、gsubの省略記号の定義を使用すると簡単に修正できます。例:

gsub(ell_def,'',tags_vector[5]) 
関連する問題