Appliquer une fonction à chaque bloc de données
J'ai 4 trames de données qui contient une colonne de date, un prix de la colonne et une colonne de retour.
de données.1:
Date Price Return
2009-01-02 100 0.2
2009-01-03 110 0.1
etc.
de données.2:
Date Price Return
2009-02-02 60 0.15
2009-02-03 50 -0.1
etc.
Je tiens à mettre en place une boucle et d'appliquer la fonction de densité() pour chaque bloc de données, le retour des valeurs de densité pour les retours.
I à propos de la création d'une liste, la configuration d'une boucle et à l'aide de lapply() pour ce faire, afin de
> ff <- list(data.1, data.2, data.3, data.4)
> for(i in 1:length(ff){
density[[i]] <- lapply(ff, density(ff[[i]]$Return))}
mais de toute évidence, cela ne fonctionne pas. Quelqu'un pourrait me proposer de l'aide?
Merci à l'avance -
Dani
OriginalL'auteur Dani | 2011-01-25
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, vous devez initialiser la densité, si vous voulez faire que de l'attribution manuelle.
Deuxième, vous utilisez la fonction de densité d'une drôle de façon. Vous devez spécifier la fonction de différent dans votre lapply. Soit vous donner la fonction et les arguments supplémentaires après la virgule, ou de vous construire votre propre petite fonction dans le lapply appel, comme montré ci-dessous.
Cela renvoie une liste automatiquement.
Pour obtenir les données, vous utilisez simplement la liste des indices:
Si vous avez nommé votre liste avant, vous pouvez utiliser les noms de :
désolé, mon erreur, j'ai mal lu
Pas de problème, merci pour la solution. Il fonctionne très bien! J'ai une question: comment puis-je accéder aux valeurs de la densité() est-il calculé? Ainsi, par exemple, je voudrais sélectionner uniquement les valeurs de x (ce qui serait le rendement) de ce que la densité calculée pour moi. Les densités de[[1]] sélectionne uniquement le résultat pour les données.1. Comment puis-je maintenant, sélectionnez uniquement l'interpolation des valeurs de x de données.1? les densités de[[1$x]] ne fonctionne pas...
voir mon edit.
Super, merci beaucoup
OriginalL'auteur Joris Meys
La chose avec lapply est que vous n'avez pas besoin d'utiliser une boucle for. Cela devrait fonctionner:
Bien qu'il y a sans doute une meilleure façon de le faire (je veux dire l'attribution manuelle de la liste).
OriginalL'auteur Sacha Epskamp