R 确实为看起来像变量的东西提供了一些工具,但它是一个幕后的函数(称为活动绑定):
> makeActiveBinding("rand.x", function(...) rnorm(1,100,10), .GlobalEnv)
> rand.x
[1] 94.1004
> rand.x
[1] 109.3716
(但使用它要非常小心,它会导致代码晦涩难懂且难以追踪错误)
您还可以使用@Peyton 提到的动态计算的子集方法创建对象类型。
正如评论中所指出的,有像 ff 这样的包将在磁盘上存储一个大数据对象,但让您可以像在内存中一样访问片段。
但是,这些都不可能实现您所描述的。集群库中的函数agnes
将那里的参数传递给另一个函数,例如data.table
oras.dist
这将有效地复制您的对象(或单次运行该函数的结果)。因此 ff 对象将被完全加载到内存中,并且[
将预先调用一次主动绑定或方法来创建整个矩阵,然后从那时起使用其副本。
如果你真的想要这个功能(我当然可以看到它的用途),最好重写集群(或其他)函数以接受一个函数而不是数据或距离矩阵。您可以按原样从函数开始,只删除不再需要的部分,并将从数据中提取的部分更改为对提供距离信息的函数的调用。