2014-05-14 60 views
0

我在R編程中很新,面臨一個簡單的問題,但找不到任何解決方案。R stats - 生成增量變量

在其他編程語言中,可以將循序漸進地命名的變量生成爲循環。這在R中可能嗎?怎麼樣?

例如,我想每一個循環完成時的動作的輸出保存到一個新的變量:

for(i in 1:5) { 
    var_[i] <- i + pi 
} 

以這種方式,我最終會與var_1var_2,.. 。,var_5

非常感謝您的幫助。

回答

5

你嘗試什麼樣的文字版本通常被認爲是不好的做法在R.

我們一般避免產生孤立的數據結構的大集合。它是乾淨多了把他們都在一個列表中,然後設置其屬性名稱:

x <- vector("list",5) 
for (i in seq_len(5)){ 
    x[[i]] <- i + pi 
} 

names(x) <- paste0("var_",1:5) 

然後你會通過之類的東西是指他們:

x[["var_1"]] 
+0

謝謝。你提出的解決方案簡單而高效--SaS – Sal

2

雖然這是可能的R中,它非常灰心。最好使用命名列表或向量或累積結果。例如,在這裏你可以將它們存儲爲一個向量。

myvar<-1:5+pi 
# myvar[1] == 4.141593 
# myvar[5] == 8.141593 

,或者如果你想創建一個列表,你可以使用

myvar <- lapply(1:5, function(x) {x+pi}) 
names(myvar)<-paste("var", 1:5, sep="_") 
# myvar[["var_1"]] == myvar[[1]] == 4.141593 

但如果你真的需要創建一組變量(你沒有),你可以使用assign()功能

+1

在list中收集所有向量後,還有'list2env'。 – A5C1D2H2I1M1N2O1R2T1