gpt4 book ai didi

r - 使用 R6 高效创建对象

转载 作者:行者123 更新时间:2023-12-04 00:53:41 24 4
gpt4 key购买 nike

我想从以下示例构造函数创建一组 R6 对象:

myClass <- R6Class("myClass",
public = list(
height = NA,
initialize = function() {
self$height <- rnorm(1, 176, 7)
})
)

并将它们放在一个新的环境中:

myEnv <- new.env()

如果群组有 10 个成员,我可以用一个循环来做到这一点:

 for(i in 1:10){  
assign(paste0("group_member_", i),
myClass$new(),
envir = myEnv)
}

您可以想象这是按比例扩大的,有更多的组成员,每个成员都有更多的特征。

我相当确定这要么是一种糟糕的方式,要么是一种缓慢的方式,或者两者兼而有之!因此,我正在寻找与这两个方面相关的改进。

最佳答案

您可以使用 lapply 在列表中一次性创建它们,然后将列表更改为环境:

myenv <- list2env(setNames(lapply(1:10, function(x) myClass$new()), 
paste0("group_member", 1:10)))

ls(myenv)
#> [1] "group_member1" "group_member10" "group_member2" "group_member3"
#> [5] "group_member4" "group_member5" "group_member6" "group_member7"
#> [9] "group_member8" "group_member9"

关于r - 使用 R6 高效创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64374954/

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