【发布时间】:2014-01-27 16:21:55
【问题描述】:
我正在尝试找到合适的语言来描述以下概念。也许有人可以帮助我。
这是一个关于编程的一般问题,但我将使用 Python 和 R 作为示例。
在 Python 中,我们可以像这样将一些东西放入字典中
myData = {}
myData["myField"] = 14
例如,在 R 中,使用 data.table 包,我们可以编写类似
data = data.table(x = c(1, 2, 3))
data[,myField: = x^2]
这些做不同的事情,但比较它们每个的第二行。在 Python 中,"myField" 是一个字符串。在 R data.table 示例中,没有字符串。 R 示例有点好,因为它可以节省你的打字时间,但是如果你想编写一个myField 是变量的程序,它会给你带来麻烦。在 Python 中这很简单,因为你可以这样做
myData[myVariable] = 14
myVariable 被定义为另一个字符串。在 R 中,您也可以这样做,但必须使用不同的语法,这意味着您必须了解两种完全不同的语法编程方式。
我的问题:这叫什么?我知道它与范围规则有关(也许是元编程?),但无法为它找出正确的语言。任何人?
【问题讨论】:
-
您确实意识到,不是吗,您在 R 中描述的行为特定于 data.table 包,以及它解析其参数的方式。更基本的数据结构(如数据框和列表)可以很好地处理字符索引。
-
这就是将词法作用域与表达式是第一类对象的原则结合起来的结果。后者在 Python 中不成立。
-
请注意,在 data.table 中您可以这样做:
myFieldName <- "myField"; data[, c(myFieldName) := x^2]. -
在 R 中也称为非标准评估。见developer.r-project.org/nonstandard-eval.pdf
-
更好的 R 等价物可能是 `myData adv-r.had.co.nz/Computing-on-the-language.html 信息丰富。
标签: python r functional-programming