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.
InformationsquelleAutor Xu Wang | 2011-11-01