27

Yahooから金融シリーズデータをインポートするためにquantmodパッケージを使用しています。

library(quantmod)
getSymbols("^GSPC")
[1] "GSPC"

オブジェクト「GSPC」の名前を「SPX」に変更したいのですが。reshapeパッケージのrename関数を試しましたが、変数名のみが変更されます。「GSPC」オブジェクトには、ベクトルGSPC.Open、GSPC.Highなどがあります。「GSPC」の名前を「SPX」に変更して、GSPC.OpenをSPX.Openなどに変更したいと思います。

4

1 に答える 1

43

オブジェクトとその中のcolnamesの名前を変更することは、2段階のプロセスです。

SPY <- GSPC # assign the object to the new name (creates a copy)
colnames(SPY) <- gsub("GSPC", "SPY", colnames(SPY)) # rename the column names

それ以外の場合、getSymbols関数を使用すると、自動割り当てを行わないことができます。その場合、最初の手順をスキップできます(列の名前を変更する必要があります)。

SPY <- getSymbols("^GSPC", auto.assign=FALSE)

@backlinからのコメント

Rはいわゆる遅延評価を採用しています。その効果は、「コピー」するときに、SPY <- GSPC実際にはメモリに新しいスペースを割り当てないことですSPY。Rは、オブジェクトが同一であることを認識しており、オブジェクトの1つが変更された場合(つまり、次の行の列名を変更した場合など、オブジェクトが同一でなくなった場合)にのみメモリに新しいコピーを作成します。だから

SPY <- GSPC
rm(GSPC)
colnames(SPY) <- gsub("GSPC", "SPY", colnames(SPY))

実際にコピーすることはGSPCなく、単に新しい名前(SPY)を付けてから、Rに名()を忘れるように指示しGSPCます。その後、列名を変更すると、新しいコピーを作成する必要がなくなりますSPYGSPCこれは、中間コピーを作成せずに、オブジェクトの名前を実際に変更したことを意味します。

于 2010-04-27T00:04:41.593 に答える