2017-08-17 4 views
2

Ce code ne fonctionne pas pour ajouter une colonne dans Tibble:add_column en Tibble avec le nom de colonne de la variable

library(tidyverse) 
    df <- data.frame("Oranges" = 5) 
    mycols <- c("Apples", "Bananas", "Oranges") 
    add_column(df, mycols[[2]] = 7) 

Je reçois le message d'erreur:

Error: unexpected '=' in "add_column(df, mycols[[2]] =" 

Mais ce code fonctionne:

add_column(df, "Bananas" = 7) 

Pourquoi? Je ne connais pas les valeurs de «mycols» à l'avance. C'est pourquoi j'ai écrit mon code pour qu'il soit une variable. Est-ce pas possible en dplry?

+0

'add_column' vient du paquet' tibble'. S'il vous plaît envisager de modifier votre titre. – www

Répondre

5

Eh bien, add_column semble provenir de tibble plutôt que dplyr, mais il utilise la nouvelle syntaxe tidy eval. Vous pouvez utiliser

add_column(df, !!(mycols[2]) := 7) 

Notez le !! et :=. Le := vous permet d'utiliser des variables pour les noms de paramètres et le !! étend l'expression dans une chaîne.

+0

Belle solution ... – Sagar

+0

Ça a marché, merci. Je vois !! et: = dans le fichier d'aide, mais je ne comprends pas la documentation, et je ne les ai jamais vu utilisés auparavant. Êtes-vous capable de dire brièvement ce qu'ils font? – Joe

+1

@Joe Jetez un oeil ici: http://dplyr.tidyverse.org/articles/programming.html – MrFlick