在 R 中设置等同于 .subset2?

Setting equivalent of .subset2 in R?

在 R 中,我可以使用 .subset2 充当 [[$ 而无需调度。

> a <- new.env()
> a$foo  <- 3
> .subset2(a, "foo")
[1] 3

但是,我似乎无法找到没有调度的设置操作的等效项:

> .subset2(a, "foo") <- 5

Error in .subset2(a, "foo") <- 5 : could not find function ".subset2<-"

如何在不使用 [[<-$<- 运算符进行隐式分派的情况下进行设置?

我不完全确定这就是你想要的,但它确实满足了在 a 环境中为 foo 设置值的先决条件,而无需显式使用 $[[[<- 运算符:

# Your code:
a <- new.env()
a$foo  <- 3
.subset2(a, "foo")
# Solution:
list2env(
  list(
    foo = 5
  ), 
  env = a
)
# Proof:
a$foo

您可能正在寻找 assign:

Description: Assign a value to a name in an environment.

assign("foo", 5, envir = a)

顺便说一句,您可能想使用 get,而不是使用 .subset2(这是基础包中的一个内部函数,可能会与 subset 混淆):

get("foo", envir = a)
# [1] 5

也许我们可以试试

with(a,assign("foo",5))

with(a, `<-`(foo, 5))

a$foo <- 5