You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建父环境不同但绑定联动的两个R环境?

模拟R中环境的联动同步特性

.BaseNamespaceEnv 和 baseenv() 具备一个特殊特性:二者的父环境不同,但在其中一个环境中修改或添加绑定,另一个环境会同步更新。

我能否模拟这种特性?期望定义 semi_clone() 函数后实现如下效果:

e1 <- new.env(parent = emptyenv())
e2 <- semi_clone(e1, parent = .GlobalEnv)
parent.env(e2)
#> .GlobalEnv
e2$x <- 1
e1$x
#> [1] 1

应用场景

以下是补充的应用场景说明:

有两个函数,它们的父环境及祖先环境不同,但我希望它们拥有联动的掩码环境——在一个掩码中修改值,另一个也会同步变化。

mask1 <- list2env(list(x = 1, y = 2))
mask2 <- mask1 # 实际场景中二者并非同一环境

# 存储自身以方便更新
mask1$mask <- mask1

# 实际场景中,该函数位于parent1环境中
add <- function() {
  mask$x <- sample(5, 1)
  x + y
}

# 实际场景中,该函数位于parent2环境中
multiply <- function() {
  x * y
}

# 在函数环境与其父环境之间插入掩码环境
environment(add) <- mask1
environment(multiply) <- mask2

set.seed(2)
multiply()
#> [1] 2
add()
#> [1] 7
multiply()
#> [1] 10

内容的提问来源于stack exchange,提问作者moodymudskipper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 03:24:56