如何使用一个变量的值作为另一个变量的名称
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
在 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