2017-10-08 5 views
1

Je voudrais combiner tous les objets (xts) qui se trouvent dans un nouvel environnement que j'ai créé. Le meilleur que j'ai trouvé est le suivant en utilisant la fonction eapply. J'ai utilisé eapply car il prend tous les objets dans l'environnement et je ne peux pas trouver quelque chose de mieux.Comment fusionner tous les objets xts dans un environnement

Ceci prendra la tête des valeurs dans chaque objet, mais je veux l'objet entier.

plist <- eapply(dataEnv, head) 
pframe <- do.call(merge, plist) 

Répondre

2

Puisque vous voulez l'objet entier, vous pouvez simplement convertir l'environnement en une liste. Puis fusionnez en utilisant do.call(), comme vous l'avez déjà fait. Par exemple:

library(quantmod) 
e <- new.env() 
getSymbols("IBM;MSFT", env = e) 
pframe <- do.call(merge, as.list(e)) 
head(pframe) 
#   IBM.Open IBM.High IBM.Low IBM.Close IBM.Volume IBM.Adjusted 
# 2007-01-03 97.18 98.40 96.26  97.27 9196800  76.18299 
# 2007-01-04 97.25 98.79 96.88  98.31 10524500  76.99751 
# 2007-01-05 97.60 97.95 96.91  97.42 7221300  76.30047 
# 2007-01-08 98.50 99.50 98.35  98.90 10340000  77.45959 
# 2007-01-09 99.08 100.33 99.07 100.07 11108200  78.37598 
# 2007-01-10 98.50 99.05 97.93  98.89 8744800  77.45180 
#   MSFT.Open MSFT.High MSFT.Low MSFT.Close MSFT.Volume MSFT.Adjusted 
# 2007-01-03  29.91  30.25 29.40  29.86 76935100  23.08097 
# 2007-01-04  29.70  29.97 29.44  29.81 45774500  23.04231 
# 2007-01-05  29.63  29.75 29.45  29.64 44607200  22.91091 
# 2007-01-08  29.65  30.10 29.53  29.93 50220200  23.13508 
# 2007-01-09  30.00  30.18 29.73  29.96 44636600  23.15826 
# 2007-01-10  29.80  29.89 29.43  29.66 55017400  22.92637 
+0

merci! En fait, avant de poster, j'ai essayé de le faire, mais j'ai reçu un message d'erreur mystérieux. Ça fonctionne maintenant))) – user8369515