J'ai une liste appelée cols
avec les noms de colonnes en elle:Spécification des noms de colonnes dans une liste dans la commande data.frame
cols <- c('Column1','Column2','Column3')
J'aimerais reproduire cette commande, mais avec un appel à la liste:
data.frame(Column1=rnorm(10))
Voici ce qui se passe quand je l'essaye:
> data.frame(cols[1]=rnorm(10))
Error: unexpected '=' in "data.frame(I(cols[1])="
La même chose se produit si je conclurai cols[1]
dans I()
ou eval()
.
Comment puis-je envoyer cet élément à partir du vecteur dans la commande data.frame()
?
Mise à jour:
Pour des renseignements généraux, j'ai défini une fonction calc.means()
qui prend une trame de données et une liste de variables et effectue une opération de ddply vaste et complexe, résumant au niveau indiqué par les variables.
Ce que je suis en train de faire avec la commande data.frame()
est de marcher en arrière les niveaux d'agrégation au sommet, réexécuter calc.means()
à chaque étape et en utilisant rbind()
pour coller les résultats sur l'autre. J'ai besoin d'ajouter des colonnes factices avec des valeurs 'All' pour que le rbind fonctionne correctement.
Je roule cast
fonctionnalités de marge comme dans ddply, fondamentalement, et je ne voudrais pas retaper les noms de colonnes pour chaque exécution. Voici le code complet:
cols <- c('Col1','Col2','Col3')
rbind (calc.means(dat,cols),
data.frame(cols[1]='All', calc.means(dat, cols[2:3])),
data.frame(cols[1]='All', cols[2]='All', calc.means(dat, cols[3]))
)
Oui, cela fonctionnerait normalement, mais 'data.frame()' se passe dans un 'rbind()'. Merci quand même. –
Vous pouvez créer le bloc de données, affecter les noms de colonnes, puis les lier, le tout dans une seule clause. – Shane
Shane, Comment cela fonctionnerait-il? Je ne suis pas sûr comment passer les objets à travers le processus dans une seule clause. –