我在R編程中很新,面臨一個簡單的問題,但找不到任何解決方案。R stats - 生成增量變量
在其他編程語言中,可以將循序漸進地命名的變量生成爲循環。這在R中可能嗎?怎麼樣?
例如,我想每一個循環完成時的動作的輸出保存到一個新的變量:
for(i in 1:5) {
var_[i] <- i + pi
}
以這種方式,我最終會與var_1
,var_2
,.. 。,var_5
。
非常感謝您的幫助。
我在R編程中很新,面臨一個簡單的問題,但找不到任何解決方案。R stats - 生成增量變量
在其他編程語言中,可以將循序漸進地命名的變量生成爲循環。這在R中可能嗎?怎麼樣?
例如,我想每一個循環完成時的動作的輸出保存到一個新的變量:
for(i in 1:5) {
var_[i] <- i + pi
}
以這種方式,我最終會與var_1
,var_2
,.. 。,var_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"]]
雖然這是可能的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()
功能
在list中收集所有向量後,還有'list2env'。 – A5C1D2H2I1M1N2O1R2T1
謝謝。你提出的解決方案簡單而高效--SaS – Sal