如何使用一个变量的值作为另一个变量的名称

how to use the value of a variable as the name of another variable

在 R 中,如何使用一个变量的值作为另一个变量的名称

例如:

SCE<-function(i){
  #x<-paste0("SCE",i)
  x<-c(i,i+1)
  return (x)
}

x<-paste0("SCE",1) 
y<-SCE(1)


paste0("SCE",1)=SCE(1)
cat("SCE",1)=SCE(1)

如何将变量x(字符串)的值作为另一个变量y(未知数据类型)的名称? 这里,我最终要得到的结果是一个名为SCE1的变量,它的类型是数字,它的值是1 2

我实际遇到的问题是:我有一段重复的代码,想用for循环来完成,但是每次完成的时候,我都想把结果保存为一个变量,这样我就可以使用了稍后。

SCE<-function(i){
  #x<-paste0("SCE",i)
  x<-c(i,i+1)
  return (x)
}

for (i in 2:9) {
  x<-paste0("SCE",i) 
  y<-SCE(i)
}

每次for循环完成,希望得到一个SCE+number的变量,其值为对应SCE函数的结果

非常感谢!

价值

paste0("SCE", 1)
#[1] "SCE1"

我们可能还需要括号

x <-paste0("SCE(", 1, ")")

然后做一个eval(parse

eval(parse(text = x))
#[1] 1 2

与执行函数相同

y <- SCE(1)
y
#[1] 1 2

如果 OP 想要从“SCE1”中获取值,则分别提取函数部分和输入参数

match.fun(sub("\d+", "", x))(as.numeric(sub("\D+", "", x)))
#[1] 1 2

如果我们想在全局环境中创建对象(不推荐),一个选项是list2env,但最好将其存储在命名的list

lst1 <- setNames(lapply(1:5, SCE), paste0("SCE", 1:5))
list2env(lst1, .GlobalEnv)

如果我没有正确理解你的问题,assign 可能是一个选项:

SCE<-function(i){
  assign(x = paste0("SCE",i), value = c(i,i+1), envir = parent.frame())
}
SCE(1)

SCE1
#> [1] 1 2