当前位置:  开发笔记 > 编程语言 > 正文

使列表内容在功能环境中可用

如何解决《使列表内容在功能环境中可用》经验,为你挑选了0个好方法。

为了避免使用带有多个参数的R函数来定义单个对象的设置,我将它们收集在一个列表中,

list_my_obj <- list("var1" = ..., "var2" = ..., ..., "varN" = ...)
class(list_my_obj) <- "my_obj"

然后,我定义将此类列表作为参数接受的函数,并将列表的元素注入函数范围:

my_fun <- function(list_my_obj) {

  stopifnot(class(list_my_obj) == "my_obj")

  list2env(list_my_obj, envir=environment())
  rm(list_my_obj)

  var_sum <- var1 + var2
  (...)

}

将列表的元素注入到函数作用域中可以避免list_my_obj$var1, list_my_obj$var2稍后在函数中使用,等调用它们,这会降低代码的可读性。

该解决方案工作得很好,但是在运行时会产生一个注释R CMD check,表示“对全局变量没有可见的绑定” var1, var2, ... varN

为了避免出现此类注释,只需在函数主体的开头手动为列表的每个元素创建新变量:

var1 <- list_my_obj$var1
(...)
varN <- list_my_obj$varN

但我想避免这种情况,因为N它可能很大。

在这种情况下,如何抑制R CMD检查记录有更好的解决方案或想法?

谢谢!

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有