R中函数中的动态变量名
我想做一个函数,它把一个向量作为输入,对向量做一些简单的运算,然后调用新的向量,它由一个集合字符串(比如“log”)加上原始的向量名组成R中函数中的动态变量名,r,variables,vector,rename,R,Variables,Vector,Rename,我想做一个函数,它把一个向量作为输入,对向量做一些简单的运算,然后调用新的向量,它由一个集合字符串(比如“log”)加上原始的向量名组成 d = c(1 2, 3) my.function <- function { x x2 <- log(x) ... d=c(12,3) my.function一种方法是单独存储所有输入向量名的名称,然后将它们传递给assign函数。像assign将文本字符串作为输出对象名一样,get从字符串中查找对象 我将假设你们的向量都遵循共同的模式,并以“
d = c(1 2, 3)
my.function <- function { x
x2 <- log(x)
...
d=c(12,3)
my.function一种方法是单独存储所有输入向量名的名称,然后将它们传递给assign
函数。像assign
将文本字符串作为输出对象名一样,get
从字符串中查找对象
我将假设你们的向量都遵循共同的模式,并以“d”开头,使其尽可能动态
d1 <- c(1,2,3)
d2 <- c(2,3,4)
vec_names <- ls(pattern = "^d")
log_vec <- function(x){
log(x)
}
sapply(vec_names, function(x) assign(paste0("log.", x), log_vec(get(x)), envir = globalenv()))
d1您可以尝试下一步:
d = c(1, 2, 3)
my.function <- function(x){
x2 <- log(x)
arg_name <- deparse(substitute(x)) # Get argument name
var_name <- paste("log", arg_name, sep="_") # Construct the name
assign(var_name, x2, env=.GlobalEnv) # Assign values to variable
# variable will be created in .GlobalEnv
}
d=c(1,2,3)
我的功能不这样做。正确的方法是log.d非常感谢。工作起来很有魅力@爸爸,爸爸,但是小心my.function(my.function(d))
不会像您希望的那样返回log.log.d
。这个函数本身不能很好地发挥作用,更不用说像lappy
这样的其他函数了。