为了避免使用带有多个参数的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检查记录有更好的解决方案或想法?
谢谢!