2012-01-11 94 views
2

中的R XTS對象dimnames(x)的假設我的變量的列表(等級:XTS)中鑑定爲.GlobalEnv如下:定影經由環

ABC.xyz 
DEF.xyz 
GHI.xyz 

這些變量通過一個函數產生。

目前,每個變量中的「列標題」與原始函數的輸出無關。

我想將每個變量中的列重命名爲變量名的前三個字母,後跟一個通用後綴;說:

".XXX" 

我試圖寫一個快速循環,使用函數dimnames(x)實現這一目標如下:

rename.list <- ls(pattern="*.xyz",envir=.GlobalEnv) 


for (i in 1:length(rename.list)){ 

    dimnames(rename.list[i]) <-list(
     NULL, 
     c(paste(substr(rename.list[i],0,3),".XXX",sep=""))) 
} 

這會產生錯誤:

error in dimnames(rename.list[i]) <- list(NULL, c(paste(substr(rename.list[i], 0, 3), : 'dimnames' applied to non-array

我可以看到爲什麼發生此錯誤(在rename.list上使用dimnames正在調用itsel的名稱而不是xts對象),但不知道如何解決這個問題。

ř2.13 運7 包 'XTS' 加載:使用get

詳細試圖。

提前爲任何幫助非常感謝(或建議來避免環路在所有!)

回答

2

您可以嘗試assign

tmp <- get(rename.list[i]) 
names(tmp) <- ... 
assign(rename.list[i], tmp, envir=.GlobalEnv) 
+0

完美。真的很好的解決方法。非常感謝你! – 2012-01-11 06:50:39

+1

(未來的谷歌搜索引擎 - 如果不清楚,請將上面的3行放在OP的循環中。) – Andrew 2012-10-24 16:32:57