3 votes

Pourquoi ne puis-je pas muter ce champ dans un df_tbl ?

Ce code :

foo <- data.frame(x=c(1,2,3))
foo <- foo %>% group_by(x)
foo <- foo %>% ungroup() %>% mutate(x=foo[,'x'])

donne cette erreur :

Error: not compatible with STRSXP

alors que cette ligne fonctionne :

foo <- foo %>% ungroup() %>% mutate(x=x)

Est-ce un bug ou une fonctionnalité ?

1voto

Jasper Points 23

Je ne suis pas tout à fait sûr de ce que vous voulez dire ici. Vous avez créé un data.frame comportant une colonne et trois observations, puis vous l'avez groupé en fonction de x, l'avez immédiatement dégroupé, et enfin vous avez utilisé mutate pour créer (remplacer) la colonne x par elle-même. Il se peut que quelque chose m'échappe. Si vous exécutez ce qui suit, l'erreur disparaît :

foo <- data.frame(x = c(1, 2, 3))
foo <- foo %>%
       group_by(x) %>%
       ungroup() %>%
       mutate(x = foo[,'x'])

Vous devez utiliser <- en R - sans vouloir vous offenser, vous êtes peut-être familier avec Python. Il existe d'autres questions sur StackOverflow qui traitent de problèmes similaires. Cependant, dans ce cas, je ne suis pas sûr que l'on puisse parler de "bug". La meilleure partie de dplyr est que vous pouvez passer des objets sans vous soucier des guillemets. Pourquoi utiliser cette syntaxe en premier lieu ? Allez-y :

foo <- data.frame(x = c(1, 2, 3))
foo <- foo %>%
       group_by(x) %>%
       ungroup() %>%
       mutate(x = x)

C'est plus facile et plus intuitif.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X