web-dev-qa-db-fra.com

Initialiser un tibble vide avec des noms de colonne et 0 lignes

J'ai un vecteur de noms de colonnes appelé tbl_colnames.

Je voudrais créer un tibble avec 0 lignes et length(tbl_colnames) colonnes.

La meilleure façon que j'ai trouvée de le faire est ...

tbl <- as_tibble(data.frame(matrix(nrow=0,ncol=length(tbl_colnames)))

et puis je veux nommer les colonnes donc ...

colnames(tbl) <- tbl_colnames.

Ma question: existe-t-il une manière plus élégante de procéder?

quelque chose comme tbl <- tibble(colnames=tbl_colnames)

11
timwiz

Puisque vous souhaitez combiner une liste de tibbles. Vous pouvez simplement affecter NULL à la variable puis bind_rows avec d'autres tibbles.

res = NULL
for(i in tibbleList)
   res = bind_rows(res,i)

Cependant, un moyen très efficace de le faire est

bind_rows(tibbleList) # combine all tibbles in the list
12
Tony416
my_tibble <- tibble(
  var_name_1 = numeric(),
  var_name_2 = numeric(),
  var_name_3 = numeric(),
  var_name_4 = numeric(),
  var_name_5 = numeric()
)

Je n'ai pas essayé, mais je suppose que cela fonctionne aussi si au lieu de lancer des vecteurs numériques de longueur 0, vous le faites avec d'autres classes (par exemple, character ()).

This SO question explique comment le faire avec d'autres bibliothèques R.

Selon this tidyverse issue, ce ne sera pas une fonctionnalité pour les tribbles.

1
Daniel