在 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
在 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