cbind un dataframe avec un vide dataframe - cbind.remplir?
Je pense que je suis à la recherche d'un analogue de rbind.fill
(dans Hadley du plyr
package) pour cbind
. J'ai regardé, mais il n'y a pas de cbind.fill
.
Ce que je veux faire est la suivante:
#set these just for this example
one_option <- TRUE
diff_option <- TRUE
return_df <- data.frame()
if (one_option) {
#do a bunch of calculations, produce a data.frame, for simplicity the following small_df
small_df <- data.frame(a=1, b=2)
return_df <- cbind(return_df,small_df)
}
if (diff_option) {
#do a bunch of calculations, produce a data.frame, for simplicity the following small2_df
small2_df <- data.frame(l="hi there", m=44)
return_df <- cbind(return_df,small2_df)
}
return_df
Naturellement, ce qui produit une erreur:
Error in data.frame(..., check.names = FALSE) :
arguments imply differing number of rows: 0, 1
Ma solution est de remplacer la ligne return_df <- data.frame()
avec return_df <- data.frame(dummy=1)
et que le code fonctionne. J'ai ensuite supprimer factice de la return_df
à la fin. Après avoir ajouté le mannequin et l'exécution du code ci-dessus, j'obtiens
dummy a b l m
1 1 1 2 hi there 44
Je puis juste besoin de se débarrasser de la maquette, par exemple:
> return_df[,2:ncol(return_df)]
a b l m
1 1 2 hi there 44
Je suis sûr que je suis absent un moyen plus facile de le faire.
edit: je suppose que je ne suis pas à la recherche d'un cbind.remplir car cela voudrait dire que un NA de valeur qui seraient créés après la cbind, ce qui n'est pas ce que je veux.
- Sans un ensemble de données et une sortie attendue, il est difficile de savoir exactement ce que vous voulez.
- vous avez raison. Je n'ai décrire mon correctif en cours, mais je n'ai pas dit de manière explicite que mon résultat souhaité a été. J'ai ajouté cette information maintenant.
Vous devez vous connecter pour publier un commentaire.
Voici un cbind de remplissage:
Essayons:
Je pense que j'ai gagné ce à partir de quelque part.
MODIFIER VOLÉ À PARTIR D'ICI: LIEN
Tout, je pense que Tyler solution est direct et le meilleur ici, je viens de l'offrir à l'autre manière, à l'aide de
rbind.fill()
que nous avons déjà.plyr
, où Tyler ne dépend pas des paquets supplémentaires (je pense).as.data.frame()
À l'aide de
rowr::cbind.fill
cbind.na de la qpcR paquet peut le faire.
cbind.na
ne semble plus être une partie de l'ensemble qpcRJe suggérer une modification de Tyler de réponse. Ma fonction permet
cbind
-ing de données.images et/ou des matrices de vecteurs sans perdre les noms de colonnes comme il arrive dans de Tyler solutionJe viens de trouver un truc que lorsque l'on veut ajouter des colonnes dans un vide dataframe, juste rbind la première fois, que cbind plus tard.
Je ne sais pas pourquoi, mais ça fonctionne pour moi.
Nous pourrions ajouter id colonne puis utilisez de fusion: