gpt4 book ai didi

r - 在其定义中使用列表元素

转载 作者:行者123 更新时间:2023-12-02 17:20:23 24 4
gpt4 key购买 nike

我遇到了一个相对简单的 R 问题,我希望我们能找到解决方案。

我的目标是定义以下列表,其中 c 元素应该是之前定义的 ab 元素的总和:

ex.list = list(
a = 1,
b = 2,
c = a+b
)

代码抛出错误(Error: object 'a' not found),表明我们不能使用上面定义的 a 和 b 元素。

当然我们可以简单地计算出列表定义的总和

ex.list = list(
a = 1,
b = 2
)
ex.list$c = ex.list$a + ex.list$b

或者在创建列表时使用其他元素

a.ex = 1
b.ex = 2
ex.list = list(
a = a.ex,
b = b.ex,
c = a.ex+b.ex
)

很遗憾,我对上述解决方案不感兴趣。有什么办法可以在列表定义中求和吗?

最佳答案

您可以编写自己的 list 函数来执行惰性求值:

lazyList <- function(...) {
tmp <- match.call(expand.dots = FALSE)$`...`
lapply(tmp, eval, envir = tmp)
}

lazyList(
a = 1,
b = 2,
c = a+b
)
#$a
#[1] 1
#
#$b
#[1] 2
#
#$c
#[1] 3

但是,显然,惰性求值无法实现以下内容:

lazyList(
a = 1,
b = 2,
d = c * a,
c = a+b
)

关于r - 在其定义中使用列表元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43202229/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com