2016-07-13 8 views
2

私はリストの名前に次のバックティックを持っています。以前のリストにはこのバックティックはなかった。RエンコーディングASCIIバックティック

$`1KG_1_14106394` 
[1] "PRDM2" 

$`1KG_20_16729654` 
[1] "OTOR" 

これは「ASCII grave accent」であり、エンコードタイプのRページを読みました。しかし、それについて何をすべきか?これがいくつかの機能(リスト名の照合など)に影響を与えるかどうかはっきりしていませんが、それをそのまま残してもかまいませんか?

エンコーディングヘルプページ:https://stat.ethz.ch/R-manual/R-devel/library/base/html/Encoding.html

ありがとう!

答えて

2

バックテックはエスケープする手段に過ぎず、そうでなければエスケープされていないと使用できなかったということを理解しています。リスト名を参照するためにバッククォートを使用する1つの例は、スペースを含む名前の場合です:

lst <- list(1, 2, 3) 
names(lst) <- c("one", "after one", "two") 

あなたが番号2を含むリストの要素を参照したい場合は、使用してこれを行うことができます:

lst[["after one"]] 

しかし、あなたはバッククォートを使用する必要がありますドル記号表記を使用する場合:

lst$`after one` 

更新:

私はちょうどSOの周りに突き刺し、this postあなたと同様の質問について議論しました。それ以外の場合、変数名が禁止されるたびに、変数名のバッククォートが必要です。 Spacesは一例ですが、予約されたキーワードを変数名として使用しています。あなたのケースでは

if <- 3  # forbidden because if is a keyword 
`if` <- 3 # allowed, because we use backticks 

あなたのリストには名前が数でを開始要素を持っています。 Rの変数名の規則はかなり甘いですが、数字で始めることはできません。したがって、数字で始めることはできません。

1KG_1_14106394 <- 3 # fails, variable name starts with a number 
KG_1_14106394 <- 3 # allowed, starts with a letter 
`1KG_1_14106394` <- 3 # also allowed, since escaped in backticks 
+0

それは意味があります。アンダースコアが問題になると思いますか?リスト名の中には、 '。 '$ variant.111'と同じですが、それは特別な賢さですか? – avari

+0

@avari私は自分の答えを更新しました。アンダースコアは問題ありません。問題は数値で始まる変数名です(多くのプログラミング言語では許可されていません)。 –

+0

ああ!再度、感謝します。私はリストの名前を残すことを好むだろう(彼らは私の選択ではなく、unfortunetly)、彼らは正しく一致するようにエスケープされているので、 'match'のような関数で使うべきでしょうか? – avari

関連する問題