我已经设置了一个脚本来接受用户输入。我想使用其中一个输入来初始化一系列变量。
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;
有办法做到这一点吗?
答案 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)
如果您提供更多信息,我可以帮助分配这些值的循环。