Funkcja mutate
z pakietu R "dplyr" ma szczególną funkcję recyklingu czynników, ponieważ wydaje się zwracać czynnik as.numeric
. W poniższym przykładzie y
staje się to, czego można się spodziewać, natomiast z
jest c(1,1)
Dziwny recykling czynników w dplyr :: mutate - bug lub funkcja?
library(dplyr)
df <- data_frame(x=1:2)
glimpse(df %>% mutate(y="A", z=factor("B")))
# Variables:
# $ x (int) 1, 2
# $ y (chr) "A", "A"
# $ z (int) 1, 1
Czy istnieje uzasadnienie tego, czy jest to błąd?
(używam R 3.1.1 i dplyr 0.3.0.1.)
EDIT:
Po wysłaniu tego jako problemu na github, Romain Francois naprawić go w ciągu kilku godzin! Jeśli powyższe jest więc używać problem devtools::install_github
aby pobrać najnowszą wersję:
library(devtools)
install_github("hadley/dplyr")
a następnie
library(dplyr)
df <- data_frame(x=1:2)
glimpse(df %>% mutate(y="A", z=factor("B")))
# Variables:
# $ x (int) 1, 2
# $ y (chr) "A", "A"
# $ z (fctr) B, B
Dobra robota Romain!
To zachowanie wydaje się być spowodowane recyklingiem wektorowym. Jeśli określisz współczynnik długości 2, np. 'Przebłysk (df%>% mutate (y =" A ", z = współczynnik (c (" B "," C "))))', zmienna 'z' będzie klasy czynnikowej. –
Jednym ze sposobów uzyskania zmiennej czynnikowej byłoby 'df%>% do (data.frame (., Y =" A ", z = współczynnik (" B "), stringiAsFactors = FALSE))' – akrun
@akrun Dlaczego ' mutować "nie jest właściwym wyborem? Jakieś pomysły? – jazzurro