Question

J'utilise le paquet quantmod pour importer des données de séries financières de Yahoo.

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

Je voudrais changer le nom de l'objet « GSPC » à « SPX ». J'ai essayé la fonction de changement de nom dans le package Reshape, mais il ne change les noms de variables. L'objet « GSPC » a vecteurs GSPC.Open, GSPC.High, etc. Je voudrais que mon changement de nom « GSPC » à « SPX » pour changer également GSPC.Open à SPX.Open et ainsi de suite.

Était-ce utile?

La solution

Changement de nom d'un objet et les colnames en son sein est un processus en deux étapes:

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

Dans le cas contraire, la fonction getSymbols vous permet de pas assign automatique, auquel cas vous pouvez sauter la première étape (vous aurez toujours besoin de renommer les colonnes).

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

Commentaire de @backlin

R emploie ce qu'on appelle évaluation paresseuse . Un effet de cela est que lorsque vous « copier » SPY <- GSPC vous n'allouez pas réellement un nouvel espace dans la mémoire pour SPY. R connaît les objets sont identiques et ne fait que une nouvelle copie dans la mémoire si l'un d'entre eux est modifié ( ie quand ils ne sont plus l'identique, par exemple lorsque vous modifiez la les noms de colonnes sur la ligne suivante). Donc, en faisant

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

jamais vraiment copier GSPC mais simplement donner un nouveau nom (SPY), puis dire R oublier le prénom (GSPC). Lorsque vous modifiez ensuite les noms de colonnes que vous n'avez pas besoin de créer une nouvelle copie de SPY depuis GSPC n'existe plus, ce qui signifie que vous avez vraiment renommé l'objet sans créer de copies intermédiaires.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top