18

\バックスラッシュ ( ) を含む文字列をファイルに書き込んでいます。

x1 = "\\str"

x2 = "\\\str"
# Error: '\s' is an unrecognized escape in character string starting "\\\s"

x2="\\\\str"
write(file = 'test', c(x1, x2))

という名前のファイルを開くと、次のtestように表示されます。

\str
\\str

5 つのバックスラッシュを含む文字列を取得したい場合、次のように 10 のバックスラッシュを記述する必要がありますか?

x = "\\\\\\\\\\str" 
4

3 に答える 3

20

[...] 5 を含む文字列を取得したい場合は\、10 と書く必要が\あります[...]

はい、そうすべきです。シングル\を文字列に記述するには、 のように記述します"\\"

これは、\が特殊文字であり、その後に続く文字をエスケープするために予約されているためです。\n(改行として認識されているかもしれません。) 単一の". のように書きます"\""

が無効である理由は、 (単一の に対応する) の後に が続く\\\strと解釈されるためです。これは、「エスケープされた」には意味がないため、有効ではありません。\\\\ss

于 2012-08-04T08:01:27.137 に答える
8

文字ベクトルに関するこのセクションを読んでください。

要するに、文字列リテラルを入力するときは、引用符 (" または ') のペアで囲むことを意味します。これらの引用符の中で、\ をエスケープ文字として使用して特殊文字を作成できます。

たとえば、\n は改行を表すか、\" を使用して " を入力することができ、R はそれが文字列の末尾であると認識しません。\ はエスケープ文字であるため、実際の . これは、\\ を使用して行います。逃げ場を逃がす!

于 2012-08-04T06:44:08.397 に答える
6

バックスラッシュが 2 重になっているのは、コマンド ラインで文字列を入力しており、その文字列が最初に R パーサーによって解析されるためであることに注意してください。文字列はさまざまな方法で入力できますが、2 倍にする必要がないものもあります。例えば:

> tmp <- scan(what='')
1: \\\\\str
2: 
Read 1 item
> print(tmp)
[1] "\\\\\\\\\\str"
> cat(tmp, '\n')
\\\\\str 
> 
于 2012-08-04T22:46:53.213 に答える