-1

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

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;

有没有办法做到这一点?

4

3 回答 3

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
于 2013-07-12T16:51:00.877 回答
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" 
于 2013-07-12T16:50:24.737 回答
2

可能想使用 paste(或 paste0)来创建变量名称,然后使用 assign 为具有该名称的变量提供您的值:

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

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

于 2013-07-12T16:50:33.373 回答