nchar("\\")=1, nchar("\abcde")=5
etc が R にあるのはなぜですか? どの機能を使用しますnchar("\\")=2, nchar("\abcde")=6
か?
3 に答える
Rでは、リテラル\
が必要な場合は、他の人が言ったようにエスケープする必要があります。encodeString()
あなたの例には理由がわかりません。私の回答の最初の行を使用nchar()
して覚えておく方が簡単です:あなたのエスケープ\
> nchar("\\\\")
[1] 2
> nchar("\\abcde")
[1] 6
エスケープを忘れたい場合encodeString()
は役立ちますが、どちらかを実行する (手動でエスケープする)かescapeString()
、両方ではなく を使用します。
> encodeString("\\")
[1] "\\\\"
> encodeString("\abcde")
[1] "\\abcde"
最後に、\uXXXX
R で Unicode 文字を入力する方法であり、これは次のようになりencodeString()
ます。
> nchar(encodeString("\u2642"))
[1] 1
これは、これを Unicode 文字の表現として扱いたいためです。この場合、「自分でエスケープする」ことは正しいことを行います。
> nchar("\\u2642")
[1] 6
R で文字列が a である場合、最初に unicdoe 文字に解釈されてから置換が行われる単純な方法はわかりません (ただし、その時点では\
.を参照してください)。 R で使用されるエスケープ シーケンスのリスト。\\
\uXXXX
\
?Quotes
バックスラッシュは次の文字をエスケープしています。これは多くのプログラミング言語で一般的です。改行を意味する`\n'のように、文字列にコントロールやその他の非印刷文字を埋め込むことができます。
したがって、「\」は実際には単一の\
文字です。懸念に対処する最も簡単な方法は、円記号を2倍にすることですnchar("\\abcde") = 6
。
nchar(encodeString("\\"))
あなたが望むものをあなたに与えるべきです。