2017-08-26 1 views
1

Je veux réunir toutes les colonnes d'un tibble en un pour le traitement ultérieur. Chaque fois que je tente de le faire, je reçois l'erreurUnir toutes les colonnes en tibias avec tidyr

erreur si (! Après) c (valeurs, x) else if (après> = lengx) c (x, valeurs) else c (x [1 L : après],: valeur manquante en cas de besoin VRAI/FAUX

Le tidyr:unite documentation dit que vous pouvez le faire en ne spécifiant pas de colonnes Voici un exemple de jouet.

ex <- as_tibble(matrix(rnorm(20), ncol = 4)) 
ex 
unite(ex, 'new') 

Suis-je manque juste un peu de subtilité tidyverse ou ...?

+1

Vous pouvez utiliser 'dplyr :: tout()' pour référencer les colonnes, par exemple 'as_tibble (matrice (rnorm (20), ncol = 4))%>% unite (nouveau, tout())', bien que tout cela ressemble à une idée horrible. – alistaire

+0

... bien que les documents semblent démodés. Il peut être un produit du basculement de rlang, mais n'importe quoi vaut un problème de GitHub s'il n'en existe aucun. – alistaire

Répondre

1

Donc, je crois que vous devez spécifier les colonnes, même si vous voulez tous les combiner.

Pour ce faire, vous pouvez simplement utiliser 1: x où x est le dernier numéro de colonne, vous n'avez pas besoin de tous les écrire. Par exemple, dans votre code que vous mettriez:

unite(ex, new, 1:4, sep="") 

Souvenez-vous de mettre le sep = argument aussi bien - sep = « » signifie qu'ils vont être reliés entre eux sans lacunes, mais sep = « ». signifie qu'il y aura un point entre les deux.

Espérons que c'est encore utile! Pour faciliter l'utilisation des numéros de colonne au lieu des noms, vous pouvez utiliser ncol() pour trouver le nombre de colonnes à spécifier, par exemple ncol (ex) renvoie 4 dans votre exemple.

0

Que diriez-vous

df <- ex %>% 
unite(ex,1:ncol(ex),sep=" ")