Je travaille avec un grand cadre de données appelé exp (file here) dans R. Dans l'intérêt de la performance, il a été suggéré que je vérifie la fonction idata.frame() de plyr. Mais je pense que je l'utilise mal.idata.frame: Pourquoi l'erreur "is.data.frame (df) n'est pas VRAI"?
Mon appel initial, lent mais cela fonctionne:
df.median<-ddply(exp,
.(groupname,starttime,fPhase,fCycle),
numcolwise(median),
na.rm=TRUE)
Avec idata.frame, Error: is.data.frame(df) is not TRUE
library(plyr)
df.median<-ddply(idata.frame(exp),
.(groupname,starttime,fPhase,fCycle),
numcolwise(median),
na.rm=TRUE)
Alors, je pensais que, peut-être mes données. J'ai donc essayé le jeu de données baseball
. Le idata.frame
exemple fonctionne très bien: dlply(idata.frame(baseball), "id", nrow)
Mais si j'essaie quelque chose de similaire à mon appel désiré à l'aide baseball
, il ne fonctionne pas:
bb.median<-ddply(idata.frame(baseball),
.(id,year,team),
numcolwise(median),
na.rm=TRUE)
>Error: is.data.frame(df) is not TRUE
Peut-être mon erreur dans la façon dont je précise les groupes? Quelqu'un sait comment faire fonctionner mon exemple?
ETA:
J'ai aussi essayé:
groupVars <- c("groupname","starttime","fPhase","fCycle")
voi<-c('inadist','smldist','lardist')
i<-idata.frame(exp)
ag.median <- aggregate(i[,voi], i[,groupVars], median)
Error in i[, voi] : object of type 'environment' is not subsettable
qui utilise un moyen plus rapide d'obtenir les terre-pleins, mais donne une autre erreur. Je ne pense pas comprendre comment utiliser idata.frame.
Oui, 'idata.frame' est encore expérimental donc il est préférable de travailler directement avec lui plutôt que d'utiliser les fonctions de résumé comme' colwise' – hadley
Étant donné que vous recherchez des performances avec des données volumineuses, je passerais du temps à regarder au paquet 'data.table' – mnel