私は次のような文字列を持っています:
str<-"a\f\r"
私はバックスラッシュを削除しようとしていますが、何も機能しません:
gsub("\","",str, fixed=TRUE)
gsub("\\","",str)
gsub("(\)","",str)
gsub("([\])","",str)
...基本的に想像できるすべてのバリエーション。 string_replace_all
関数も試しました。何か助け??
Rバージョン3.1.1を使用しています。 Mac OSX 10.7;文字列のベクトル内の単一の文字列のdput
は次のようになります。
dput(line)
"ud83d\ude21\ud83d\udd2b"
標準の.txt
ファイルからreadLines
を使用してファイルをインポートしました。ファイルの内容は次のようになります。got an engineer booked for this afternoon \ud83d\udc4d all now hopefully sorted\ud83d\ude0a I m going to go insane ud83d\ude21\ud83d\udd2b in utf8towcs …
ありがとう。
単一のバックスラッシュを処理する直接的な方法はないため、コメントセクションでDavid Arenburgが提供した問題に最も近い解決策を以下に示します。
gsub("[^A-Za-z0-9]", "", str) #remove all besides the alphabets & numbers
キーボードからバックスラッシュを入力するときは、常にエスケープしてください。
str <-"this\\is\\my\\string" # note doubled backslashes -> 'this\is\my\string'
gsub("\\", "", str, fixed=TRUE) # ditto
str2 <- "a\\f\\r" # ditto -> 'a\f\r'
gsub("\\", "", str2, fixed=TRUE)# ditto
あなたがする場合に注意してください
str <- "a\f\r"
str
には、noバックスラッシュが含まれます。 a
、\f
(\f
、\r
(同じ)を除き、通常は印刷できません)の3文字で構成されます。
そして、可能な質問に立ち向かうためだけです。データがファイルから読み取られた場合、ファイルに二重のバックスラッシュを含める必要はありません。たとえば、次を含むファイルtest.txt
がある場合
a\b\c\d\e\f
あなたがやる
str <- readLines("test.txt")
str
には、予想どおり文字列a\b\c\d\e\f
が含まれます。5つの単一のバックスラッシュで区切られた6文字。ただし、使用する場合は、typeバックスラッシュを2つ重ねる必要があります。
str <- gsub("\\", "", str, fixed=TRUE) # now contains abcdef
dput
からは、UTF-16でエンコードされたテキストがあるように見えますが、これはおそらくWindowsマシンから来たものです。による
Supplementary Multilingual Plane でグリフをエンコードしますが、これはかなりあいまいです。ファイルを読み込むときに、encoding="UTF-16"
をreadLines
に渡す必要があると思います。
1つの非常に普遍的なソリューションは
gsub("\\\\", "", str)
上記のコメントに感謝します。
これは役に立つかもしれません:)
require(stringi)
stri_escape_unicode("ala\\ma\\kota")
## [1] "ala\\\\ma\\\\kota"
stri_unescape_unicode("ala\\ ma\\ kota")
## [1] "ala ma kota"
これは受け入れられた答えと同じですが、rtemovesは少なくなります(非ASCII文字のみ):
gsub("[^ -~]", '', "a\f\r")
## [1] "a"