【发布时间】:2017-05-28 04:03:55
【问题描述】:
我想创建一些功能略有不同的函数,并且每个函数都可以接受一个全局变量。
我使用assign 将函数this_value 分配给它应该具有的名称this_key。它应该创建的三个函数是func_a、func_b 和func_c。
每个新创建的函数都应该能够接受输入 x 并对 x 执行特定于该函数的操作;在这种情况下,打印“key_name:name ----- value_x:x”。所以name应该取决于函数是func_a,func_b,还是func_c;例如,调用func_a 应该给我们“key_name:a”。
to_name <- c("a", "b", "c")
create_funcs <- function() {
all_funcs <- list()
for (name in to_name) {
this_key <- paste0("func_", name)
this_value <<- function(x) {
paste0("key_name: ", name, " ----- value_x: ", x)
}
assign(this_key, this_value, envir = .GlobalEnv)
all_funcs <- c(all_funcs, this_key)
}
return(all_funcs)
}
create_funcs()
但是,在创建函数之后,它们每个都只返回一个“c”的name,或者向量中的最后一个值to_name。
func_a("foo") # key_name: c ----- value_x: foo
func_b("bar") # key_name: c ----- value_x: bar
相反,func_a("foo") 应该返回“key_name: a ----- value_x: foo”。
对于它的价值,这适用于类似的对象分配功能:
create_objects <- function() {
all_objs <- list()
for (name in to_name) {
this_key <- paste0("key_", name)
this_value <- paste0("value_", name)
assign(this_key, this_value, envir = .GlobalEnv)
all_objs <- c(all_objs, this_key)
}
return(all_objs)
}
create_objects()
例子:
key_a # value_a
感谢观看!
【问题讨论】:
标签: r