2012-02-05 92 views
1

我想请求一些帮助,创建一个变量序列v1,v2,... ,而运行一个程序。 我跑了一个这样的变量下面的代码:R:创建一个动态变量

FinishAt <- 1 
Sequence <- 1:FinishAt 
AsCharacterSequence <- as.character(Sequence) 

aa <- paste("v", AsCharacterSequence[1], sep="", collapse="") # [1] "v1" 
bb <- eval(substitute(variable), list(variable=as.name(a))) # v1 

我面对的是我们要怎样使V1带有值的变量的问题(假设5)。

预先感谢您。

+0

你为什么要这样做,而不是使用数组? – nico 2012-02-05 09:25:52

+1

'assign(“v5”,5)' – 2012-02-05 09:33:07

+0

@nico:因为我想控制变量的名称。@ Karsten W:v1为了使用assign而不是一个变量。存在的唯一变量是aa和bb。 – 2012-02-05 09:35:52

回答

4

您可以用assign即时定义变量。例如,下面的命令生成三个变量V1 ... V3:

var_names <- paste("v", 1:3, sep="") 
for (v in var_names) assign(v, runif(1)) 

的对口assignget,也就是说,如果你想要的变量的值,使用类似:

bb <- sapply(var_names, get) 

另请注意,assignget都有一个可选的envir参数,这使您可以将这些变量远离其他代码。

我不确定,但我认为有可能如果有很多变量,分配/ get比列表要快,至少如果你想查找一些值。