2012-02-05 133 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比列表要快,至少如果你想查找一些值。