我想从下面的示例构造函数中创建一组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)
}你可以想象这被放大了,有更多的组成员,每个成员都有更多的特征。
我敢肯定,这不是一种糟糕的方法,就是一种缓慢的方法,或者两者兼而有之!因此,我正在寻找与这两个方面相关的改进。
发布于 2020-10-15 15:48:14
您可以使用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" 发布于 2020-10-15 16:38:51
另一个选择是map
library(purrr)
library(dplyr)
library(stringr)
myenv <- list2env(map(1:10, ~ myClass$new()) %>%
set_names(str_c('group_member', seq_along(.))))-output
ls(myenv)
#[1] "group_member1" "group_member10" "group_member2" "group_member3" "group_member4" "group_member5" "group_member6"
#[8] "group_member7" "group_member8" "group_member9" https://stackoverflow.com/questions/64374954
复制相似问题