2010-04-02 11 views
13

J'utilise by() pour évaluer une fonction par des facteurs dans ma structure de données, mais j'ai besoin d'utiliser les résultats sous forme de tableau.classe "By" dans la structure de données dans R

J'ai vu une utilisation de as.data.frame.table pour obtenir un objet de classe "By" dans une trame de données, mais je ne suis pas sûr si cela ne fonctionne que lorsque le nombre de facteurs utilisés dans le par La fonction() est la même que la longueur de la sortie "par". En utilisant as.data.frame.table je reçois l'erreur suivante

» ... arguments impliquent des nombres de lignes: 10, 33"

Y at-il une autre façon de le faire? Peut-on utiliser tplly à la place de by() pour obtenir une classe de sortie différente?

BTW, j'utilise par() pour convertir mes données dans une table de fréquence puis regrouper par bacs standards

BT_by <- by(BT_H, BT_H$Tax_pp, function(BT_H) hist(rep.int(BT_H$Altitude, BT_H$Count), breaks = seq(0,6600,200), plot = FALSE)$counts) 

Toute aide serait appréciée.

+1

Je pense que vous feriez mieux d'utiliser 'cut' et' xtabs'. – hadley

Répondre

18

La sortie de by est essentiellement une liste. Si vous souhaitez combiner ces vecteurs, vous pouvez utiliser do.call(rbind, BT_by) (ou cbind en fonction de la forme souhaitée).

+1

Merci Jonathan, c'est exactement ce que je voulais. – CCID

+4

'do.call' n'a pas fonctionné pour moi mais l'application directe de' rbind' a fait: 'rbind (BT_by)'. –