2016-11-23 2 views
0

Rにはraw-vector/raw-charactersというものがあります。 "rawToChar"や "charToRaw"などの関数からのものです。生のベクトルをコンソールに置くと、それは印刷されます。そのような生の要素の1つは "83"として印刷されるかもしれません。今私は、与えられた生キャラクタが "83"として印刷された生キャラクタと等しいかどうかを確認したい。だから私はその生キャラクターを比較するために自分のコードにハードコーディングしたいと思っています。どうすればいいのですか?
私が見つけた唯一の方法はcharToRaw( "ƒ")を使用しています。ただし、これはコンソールでのみ機能します。 RStudioファイルのソースコードにfを入れるのは難しいです。ただ、試してみてください。出力として得られますRStudioで生の文字「83」をハードコードするにはどうすればよいですか?

print("ƒ") 

を:
[1]「AE」」
を印刷文がコンパイルさRStudioファイル(コンソールで期待どおりにのみ動作します)である場合。

+0

どのようなintを使用するか知っていますか? intToUtf8(83)とintToUtf8(8 * 16 + 3)の両方がcharToRaw( "ƒ")と異なる結果を返します – dimpol

答えて

2

83は生の値、つまり16進数ですl番号。これは、ソースコード内のUTF-8文字をハードコードする必要が危険ではありません

intToUtf8(8 * 16 + 3) == "ƒ" 
#[1] TRUE 

またはこの

x <- rawToChar(as.raw(8*16+3)) 
Encoding(x) <- "latin1" 
x == "ƒ" 
#[1] TRUE 

あなたはこれを使用することができます。

+0

ありがとうございました! intToUtf8(8 * 16 + 3)は\ u0083として出力されるので、最初はちょっと混乱していましたが、実際は同じ生の値です。ありがとう! – dimpol

1

私は、次の2を試してみましたが、それが機能

> for (i in 1:3) { 
+ print("ƒ") 
+ } 
[1] "ƒ" 
[1] "ƒ" 
[1] "ƒ" 

することができます開いているファイル内のコンソール

> print("ƒ") 
[1] "ƒ" 

から私のため

に動作します - >エンコードで再度開きます - >を選択UTF -8と1回試してください

+0

すばやく応答いただきありがとうございます。エンコードをUTF-8に変更しようとしましたが、効果はありませんでした。 – dimpol

+0

追加するには、文字がコンパイルされたファイル内にあり、そのファイル内の関数がコマンドラインで呼び出された場合にのみ問題が発生します。コピーしてfor-loopをコンソールに貼り付けると – dimpol

関連する問題