【发布时间】:2013-05-10 15:38:33
【问题描述】:
我很困惑何时将值视为变量,何时将 R 中的值视为字符串。在 Ruby 和 Python 中,我习惯于始终必须引用字符串,而始终处理未引用的字符串作为变量。 IE。
a["hello"] => a["hello"]
b = "hi"
a[b] => a["hi"]
但在 R 中,情况并非如此,例如
a$b < c(1,2,3)
这里的b是列的值/名称,而不是变量b。
c <- "b"
a$c => column not found (it's looking for column c, not b, which is the value of the variable c)
(我知道在这种特定情况下我可以使用 a[c],但还有很多其他情况。例如 ggplot(a, aes(x=c)) - 我想绘制作为 c 值的列,而不是名称 c )...
在其他 StackOverflow 问题中,我看到了引用、替代等内容。
我的问题是:是否有一种“扩展”变量并确保使用变量的值而不是变量名的通用方法?或者这不是 R 中的工作方式?
【问题讨论】:
-
我认为下面提到的
get在技术上是最“通用”的解决方案。但是对于不同的情况,正确的答案可能会有所不同。例如请参阅下面的我的 cmets,了解在 ggplot 中不使用aes_string的可怕性。 -
@joran 我同意,但我认为使用
$运算符没有任何正确 方式(或其他方式)。 -
您可能会觉得这很有帮助:github.com/hadley/devtools/wiki/Computing-on-the-language(仍在进行中)
标签: r