【发布时间】:2014-09-10 15:34:49
【问题描述】:
这是我之前发布的关于如何为名称向量赋值的问题的后续:R: How do I concisely assign names to vector parameter components?
我想为名称向量赋值,我需要在下面的代码中以 function2 形式的多个不同函数中执行此操作。与其将代码插入到每个函数中,我想编写一个如下形式的函数 1 的子例程,并在每个函数中调用它。不幸的是,当我调用它时,名称分配保留在 function1 中,并且无法在“return(adam + ...)”部分中使用。我怀疑这与我如何为分配函数指定环境有关,但我不知道如何修复它(我不想全局分配名称)。任何人都可以帮忙吗?
我尝试使用的粗略代码如下:
function1 <- function(vector, names){
for (i in 1:length(vector){
assign(names[i], vector[,i], envir = environment())
}
}
function2 <- function(vector){
names1 <- c("adam", "becky", "charlie",...)
function1(vector,names1)
return( adam + becky^2 - 2*charlie*david +...)
}
【问题讨论】:
-
我会避免使用
assign和全局变量/环境headeach。改用“命名向量”/列表来设置所有变量。 -
你需要学习函数式编程的概念,尤其是 R。你让这些事情变得比他们需要的要困难得多。
-
+1 罗兰。阅读此内容,基本上是 R 手册 burns-stat.com/pages/Tutor/R_inferno.pdf
-
谢谢,我会读一读。同时,对这段代码有什么建议吗?
标签: r function environment-variables