r - 有没有办法克隆由 simmer 创建的“包装”对象?
问题描述
我创建了 simmer 模拟的并行副本,与 simmer简介中的方式相同:
library(parallel)
library(simmer)
envs <- mclapply(1:100, function(i) {
simmer("SuperDuperSim") %>%
add_resource("nurse", 1) %>%
add_resource("doctor", 2) %>%
add_resource("administration", 1) %>%
add_generator("patient", patient, function() rnorm(1, 10, 2)) %>%
run(80) %>%
wrap()
})
现在每个对象envs
都不是一个simmer
类,而是一个wrap
类。我想在envs
不修改原始对象的情况下修改每个对象的某些部分,但是属性的任何更改都会影响原始对象。
如何克隆wrap
对象以对其属性进行一些更改并保持原始对象不变?
解决方案
长期研究表明,没有明确的函数可以完全满足我对慢煮物体的需求。但是,我发现simmer
和wrap
对象都是 type environment
。这里明显的解决方案是克隆环境,这里回答了这个问题,并将相同的类分配给新创建的环境,以使其看起来像原始对象。
示例代码:
clonedEnvs <- lapply(envs, function(env) {
result <- as.environment(as.list.environment(env, all.names = TRUE))
structure(result, class = class(env))
})
推荐阅读
- git - 仅当 VPN 处于活动状态或在公司网络上时才让 git 使用代理
- python - SymPy 为 Eq.solve 返回 False
- flutter - Flutter Dart 中用于静态方法的扩展
- python - 更快的 sklearn tf-idf 矢量化器
- python - 有条件地从 JSON 中提取 URL
- windows - 如何使用自动工具为 Windows 生成配置脚本
- r - R中带有尾声的列表的MCMC诊断
- unity3d - 当播放器层在背景层之后时背景重叠播放器
- python-3.x - Python Selenium 如果元素为无,请单击其他元素
- python - 使用 Python 将大型 XML 文件导入 MySql