Durante il tentativo di rispondere a this question, ho riscontrato una differenza tra mutate
e transform
in quelle che mi aspettavo fossero operazioni equivalenti.Differenza tra dplyr: mutare e trasformare quando si usano pmin e pmax?
# data
x <- data.frame(a=c(rep(0,10),rep(1,10),3),b=c(1:10,0,11:19,0))
#transform
transform(x,a=pmin(a,b), b=pmax(a,b))
a b
1 0 1
2 0 2
3 0 3
4 0 4
5 0 5
6 0 6
7 0 7
8 0 8
9 0 9
10 0 10
11 0 1
12 1 11
13 1 12
14 1 13
15 1 14
16 1 15
17 1 16
18 1 17
19 1 18
20 1 19
21 0 3
#mutate
libarary(dplyr)
x %>% mutate(a=pmin(a,b), b=pmax(a,b))
a b
1 0 1
2 0 2
3 0 3
4 0 4
5 0 5
6 0 6
7 0 7
8 0 8
9 0 9
10 0 10
11 0 0
12 1 11
13 1 12
14 1 13
15 1 14
16 1 15
17 1 16
18 1 17
19 1 18
20 1 19
21 0 0
Nota le differenze di linee 11 e 21. Ho il sospetto che mutate
sta mutando i dati come va e, pertanto, pmax
non è vedere i dati originali. È corretto? È un bug o di progettazione?
sei corretto, ed è di progettazione (c'è qualche discussione negli archivi, ho dimenticato dove). – baptiste
@baptiste Grazie, penso di capire perché ora: consentire l'uso di variabili calcolate nello stesso comando, quindi è necessario fare riferimento agli originali in modo esplicito. – James