这是我之前发布的有关如何为名称向量指定值的问题的后续跟进:R: How do I concisely assign names to vector parameter components?
我想为名称向量赋值,我需要在下面的代码中的函数2的多个不同函数中执行此操作。我没有将代码插入到每个函数中,而是想编写下面的函数形式1的子例程,并在每个函数中调用它。不幸的是,当我调用它时,名称分配保留在function1中,并且不能在" return(adam + ...)"中使用。部分。我怀疑这与我如何为assign函数指定环境有关,但我不知道如何修复它(我不想全局分配名称)。有人可以帮忙吗?
我尝试使用的粗略代码如下:
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 +...)
}
答案 0 :(得分:1)
你不想为名字分配编写一个函数,更不用说包含循环的函数了。
改为使用命名向量。 例如:
vec1 <- c("this","that","the other")
vec2 <- c(5,7,9)
names(vec2) <- vec1
然后这个工作
vec2['that'] <- vec2['that'] + 1
print(vec2)
this that the other
5 8 9
答案 1 :(得分:0)
您可以尝试:
function1 <- function(vector, names, envir){
for (i in 1:length(vector)){
assign(names[i], vector[i], envir = envir)
}
}
function2 <- function(vector){
names1 <- c("adam", "becky", "charlie", "david")
function1(vector,names1, envir=environment())
return(adam + becky^2 - 2*charlie*david)
}
v1 <- 1:4
function2(v1)
#[1] -19
adam
#Error: object 'adam' not found