10
votes

Manipulation de données en r dans le style Linq

Je suis intéressé s'il y a un package dans R pour prendre en charge la manipulation des données de style de chaîne d'appel, comme dans C # / Linq, F #? Je veux activer le style comme ceci: xxx


2 commentaires

Veuillez décrire la structure de la nouvelle liste pour ceux qui ne peuvent pas facilement exécuter ce code


Il peut y avoir, bien qu'il soit hors de style r habituel - R est de schéma et tend à utiliser le style fonctionnel f (x) plutôt que x.f . Vous pouvez ajouter quelque chose comme ceci sans trop de travail - toutes les opérations de base sont définies, juste sous forme fonctionnelle.


4 Réponses :


11
votes

Je ne connais pas d'un, mais voici le début de ce qu'il pourrait ressembler à: xxx pré>

ceci imprime p> xxx pré>

Si vous continuez à utiliser des hacks comme celui-ci, il devrait être assez simple d'obtenir le genre de Syntaxe que vous trouvez agréable; -) p>

EDIT: combinée avec Plyr code>, cela ne devient pas mal du tout: p>

(data.frame(
    x = c(1, 1, 1, 2, 2, 2),
    y = runif(6)
)
    %then% subset(y > 0.2)
    %then% ddply(.(x), summarize,
            ysum   = sum(y),
            ycount = length(y)
        )
    %then% print
)


0 commentaires

2
votes

(pas une réponse. Plus un commentaire étendu sur la réponse d'Owen.] La réponse de Owen m'a aidé à comprendre ce que vous étiez après et j'ai beaucoup aimé lire sa réponse perspicace. Ce style "à l'extérieur à l'intérieur" me rappelait un exemple sur l'aide (Réduire) Page Où la fonction FunCall est définie et appliquée successivement:

## Iterative function application:
Funcall <- function(f, ...) f(...)
## Compute log(exp(acos(cos(0))
Reduce(Funcall, list(log, exp, acos, cos), 0, right = TRUE)


0 commentaires

1
votes

https://github.com/slycoder/rpipe xxx < P> Certes, il serait agréable d'avoir un où fonctionner ici ou également pour permettre aux fonctions anonymes d'être transmis, mais hey le code source est là: fourrez-le et ajoutez-le si vous le souhaitez.


0 commentaires

6
votes

dplyr la syntaxe en chaînage ressemble à Linq (exemple de stock): xxx

Introduction à dplyr - enchaînant


0 commentaires