您可以使用lapply
創建數據列表,然後使用國家代碼重命名列表中的每個元素。
countries<-c("a","b","c")
dat<-lapply(countries,function(x) rnorm(4))
names(dat)<-countries
> dat[["a"]]
[1] -0.5157099 -1.0372721 0.9696698 -0.9280852
你不會有一個變量命名POL或美國,但你有一個列表,從中可以提取相關數據幀。我認爲這可能是比爲每個國家創建變量更清潔的解決方案。
你可以尋找到的應用功能(apply
,mapply
,sapply
,lapply
等)大概一個做掉你的循環。考慮以下幾點: 外lapply進行全面走高國家級「循環」的功能,而內部mapply執行鍼對單一國家一組給定的各種參數的操作
countries<-c("a","b","c")
arg1<-1:3
arg2<-10*1:3
dat<-mapply(data.frame(c1=x,c2=rnorm(1)*vars),vars,x,SIMPLIFY=F))
names(dat)<-countries
dat<-lapply(countries, function(x)
do.call(rbind,
mapply(function(x,y,z) data.frame(country=x,c1=rnorm(2)*y,c2=rnorm(2)*z),
x=x,y=arg1,z=arg2,SIMPLIFY=F)))
如果仍要堅持你的for循環,然後創建一個列表,並添加到它並重命名爲
result<-list()
for(i in 1:50) result[[i]]<-YOURFUNCTIONHERE
names(result)<-countryNames
來源
2014-03-13 18:02:58
JPC
謝謝,但我不知道這將如何配合我的循環結構。也許我應該更清楚地解釋一下,每個var1-3有不同的ID碼,差異超出了國家標識符。還有其他建議嗎? – aciM
我明白了。我會編輯我的回覆。我得到的是,你並不需要一個for循環。大多數情況下,您應該儘量避免使用支持向量操作的語言進行循環。 – JPC
我知道這樣會更優雅,但我真的不確定這可以與我需要調用的API函數一起工作。我已經在這裏重寫我的問題:http://stackoverflow.com/questions/22388404/r-how-to-rename-a-dataframe-within-a-for-loop – aciM