使用变量的内容来生成一系列变量名。

时间:2013-07-12 16:33:03

标签: r

我已经设置了一个脚本来接受用户输入。我想使用其中一个输入来初始化一系列变量。

X <- 'a' # a is what the user would input from command line

我想将X的内容添加到一系列变量名称中。我希望最终的名字看起来像:

XXX_a_1 <- #something; XXX_a_2 <- #something; XXX_a_3 <- #something; XXX_a_4 <- #something; XXX_a_5 <- #something; XXX_a_6 <- #something;

有办法做到这一点吗?

3 个答案:

答案 0 :(得分:3)

R被优化以处理向量和列表,因此通常当你发现自己创建了大量变量时,你应该问自己一个向量/列表是否会更好用。

你可以做,例如:

user.input <- "test"
vars <- paste(user.input, 1:5, sep="_")

my.list <- list()

for (v in vars)
  my.list[[v]] = sample(1:10, 1)

给出了:

> my.list
$test_1
[1] 3

$test_2
[1] 5

$test_3
[1] 3

$test_4
[1] 5

$test_5
[1] 5

答案 1 :(得分:2)

目前尚不清楚您想对分离的变量做什么。最好使用列表或环境。例如,您可以创建如下命名列表:

X <- 'a'
L <- vector("list", 5)
names(L) <- paste('XXX',X,1:5,sep='_')

当然,您可以使用list2env将您的列表转换为单独的变量:

list2env(L,.GlobalEnv)
ls(pattern='XXX')
[1] "XXX_a_1" "XXX_a_2" "XXX_a_3" "XXX_a_4" "XXX_a_5" 

答案 2 :(得分:2)

可能想要使用paste(或paste0)来创建变量名,然后使用assign为该变量赋一个变量值:

X <- "a"
assign(paste0("XXX_",X,"_1"), "value1")
print(XXX_a_1)

如果您提供更多信息,我可以帮助分配这些值的循环。