ループを介してrのXTSオブジェクトのディムネーム(x)を固定する

StackOverflow https://stackoverflow.com/questions/8815075

  •  26-10-2019
  •  | 
  •  

質問

変数のリスト(クラス:XTS)があると仮定します .GlobalEnv 次のように識別されます:

ABC.xyz
DEF.xyz
GHI.xyz

これらの変数は、関数を介して生成されます。

現在、各変数の「列ヘッダー」は、元の関数の出力からナンセンスです。

これらの各変数の列を変数名の最初の3文字に変更し、次に汎用サフィックスを変更したいと思います。いう:

".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を使用してXTSオブジェクトではなく名前自体を呼び出します)が、これを回避する方法はわかりません。使用してみました get

詳細:

R 2.13 WIN 7パッケージ「XTS」ロード。

あらゆる助けに感謝します(またはループを避けるための提案!)

役に立ちましたか?

解決

あなたが試すことができます assign:

tmp <- get(rename.list[i])
names(tmp) <- ...
assign(rename.list[i], tmp, envir=.GlobalEnv)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top