2013-10-03 34 views
15

如果我在名稱中創建一個帶反引號的變量,是否有方法使用反引號語法來訪問它?變量名中的反引號

assign("a`b", 5) 
get("a`b") 
#[1] 5 

# The attempts below all end in various errors 
# `a`b` 
# `a``b` 
# `a\\`b` 
+4

爲什麼特別是你想使用反引號它來訪問?報價有什麼問題,你確定沒有其他方法可以解決這個問題嗎? –

+0

我認爲答案可以總結在一個詞 - 方便 – eddi

+0

然而,你正在運行到這樣的名稱,你可以將它分配給一個變量,然後'得到(。)'變量 –

回答

17

你所有的努力最終以各種錯誤,因爲?Quotes說,你只能逃跑的(含)表中列出的字符;而"`"不在該表中。

您可以使用十六進制,八進制的"`"等表示儘管:

> `a\x60b` # hex 
[1] 5 
> `a\140b` # octal 
[1] 5 
+0

+1它甚至可以很好地打印: 'print('a \ x60b')' – Frank

+0

但是,如果您不知道列名中反引號的先驗*,該怎麼辦?會運行'gsub(''','\ x60',colnames)'足夠嗎? –

+0

鏈接的幫助版本適用於R-devel,並且實際上確實包含反引號作爲易變字符,所以我想這意味着一個簡單的轉義將很快開始工作。 – eddi