【发布时间】:2020-11-07 11:49:19
【问题描述】:
在以下示例中,列表中的函数应返回字符串 "The value currently is 42"。
l <- list(
param = 42,
f = function() { paste("The value currently is", param) }
)
(受 Mozilla 关键字 this 的 js 文档启发的示例)
由于object 'param' not found,显然调用l$f() 失败。
我尝试使用ls.str() 和ls() 检查环境中可用的对象。我找到的最接近的解决方案是引用分配给列表的变量名称。
l <- list(
param = 42,
f = function() { paste("The value currently is", l$param) }
)
这当然不是最理想的,因为变量可以命名为任何名称。
l 内部的函数有没有办法引用它的相邻属性param?如果没有,是否有一些嵌套的更复杂的解决方案可以完成类似的任务?
【问题讨论】:
-
您是否希望将其应用于特定的用例?这个结构对我来说看起来很奇怪,我真的无法想象它的用途是什么。也许一个例子可以帮助我弄清楚什么样的结构可以实现你的目标。
-
@Julian_Hn 有点难以描述,但
list中有十几个属性我想在列表中有一个函数,它根据属性的值返回一些有用的信息(例如构建列表的一些字符串表示,获取所有负数的数字属性等)。我不想为此创建传递列表的全局函数。我在 JavaScript 中使用了很多this方法,尽管我认为在 R 中对于此类问题还有其他范例。 -
这不是 OOP 的典型例子吗?因此,创建一个具有分配函数的类,然后您可以将这些函数应用于该类的每个实例,并对这个对象执行所需的操作。