R中函数中的动态变量名

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从字符串中查找对象 我将假设你们的向量都遵循共同的模式,并以“

我想做一个函数,它把一个向量作为输入,对向量做一些简单的运算,然后调用新的向量,它由一个集合字符串(比如“log”)加上原始的向量名组成

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
这样的其他函数了。