2013-10-03 36 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