2017-08-21 8 views
0

私は、上付き文字の登録商標®のユニコード値でSASからインポートされた変な変数を持っています。変数printをRの登録商標にしようとするためにgsubを使用しました。私がしたこと。何らかの理由で余分な記号が印刷されています。なぜこれが起こっているのか誰にも分かりますか?登録商標印字余分な文字

var1<-factor(c("prod1^{unicode 00AE}","prod2^{unicode 00AE}")) 
var2<-as.factor(sapply(var1,gsub,pattern="\\{unicode 00AE\\}",replacement="\u00AE")) 
> var2 
[1] prod1^® prod2^® 
Levels: prod1^® prod2^® 
+0

をあなたは常にポスト処理することができるVAR2 < 'と - (GSUB "Â"、 ""、var2、fixed = TRUE) ' –

答えて

1

gsubで起こっていることがわかりません。

> var1<-factor(c("prod1^{unicode 00AE}","prod2^{unicode 00AE}")) 
> var2<-as.factor(sapply(var1,str_replace_all,pattern="\\{unicode 00AE\\}",replacement="\U00AE")) 
> var2 
[1] prod1^® prod2^® 
Levels: prod1^® prod2^® 
+0

サーガルありがとうございます。あなたのソリューションはすばらしく機能します。私はまだgsubがうまくいかなかったのはまだ分かりませんが、それは大きな問題ではありません。 –

1

エラーがgsubfixed=TRUEを用いた場合であっても、適切に交換して\uXXXX表記を処理しないという事実から来ている:しかしstringrによって提供さstr_replace_allは、必要な出力を提供することができます。実際には結果をUTF8に "手動で"設定する必要があります。これは動作しますが、見て:

> res <- gsub("{unicode 00AE}", "\u00AE", x, fixed=TRUE) 
> res 
[1] "prod1^®" 
> Encoding(res) <- "UTF-8" 
> res 
[1] "prod1^®" 

あなたのケースでは、あなただけのreplacement="®"を使用することができ、それは正しく結果が表示されます。

> var2<-as.factor(sapply(var1,gsub,pattern="{unicode 00AE}",replacement="®", fixed=TRUE)) 
> var2 
[1] prod1^® prod2^® 
Levels: prod1^® prod2^® 
関連する問題