Kropka jest używana wewnątrz dplyr głównie (nie wyłącznie) w mutate_each
, summarise_each
i do
. W pierwszych dwóch (i ich odpowiednikach SE) odnosi się do wszystkich kolumn, do których stosowane są funkcje w funs
. W dokumencie do
odwołuje się do (potencjalnie zgrupowanego) data.frame, dzięki czemu można odwoływać się do pojedynczych kolumn, używając .$xyz
do odwołania do kolumny o nazwie "xyz".
Przyczyny nie można uruchomić
filter(df, . == 5)
dlatego a) filter
nie jest przeznaczony do pracy z wieloma kolumnami jak mutate_each
na przykład i B) trzeba by użyć operatora rury %>%
(pierwotnie z magrittr
) .
Jednakże, można użyć go z funkcji takich jak rowSums
wewnątrz filter
w połączeniu z operatorem rury %>%
:
> filter(mtcars, rowSums(. > 5) > 4)
Error: Objekt '.' not found
> mtcars %>% filter(rowSums(. > 5) > 4) %>% head()
lm cyl disp hp drat wt qsec vs am gear carb
1 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
2 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
3 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
4 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
5 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
6 14.3 8 360 245 3.21 3.570 15.84 0 0 3 4
Należy również spojrzeć na plikach magrittr Pomoc:
library(magrittr)
help("%>%")
Ze strony pomocy:
Umieszczanie LHS gdzie indziej w Rhs Call Często będziesz potrzebował LHS do wywołania RMS w innej pozycji niż pierwsza. W tym celu możesz użyć kropki (.) Jako symbolu zastępczego. Na przykład y %>% f(x, .)
jest odpowiednikiem f(x, y)
, a z %>% f(x, y, arg = .)
jest odpowiednikiem f(x, y, arg = z)
.
za pomocą kropki dla innych celów Często część atrybutu lub właściwość jest pożądana w LHS RHS wywołać oprócz wartości sama LHS, np liczba wierszy lub kolumn. To jest całkowicie poprawne, aby użyć kropki placeholder kilka razy w wywołaniu rhs, ale przez projekt zachowanie jest nieco inne, gdy używa się go wewnątrz zagnieżdżonych wywołań funkcji . W szczególności, jeśli symbol zastępczy jest używany tylko w zagnieżdżonym wywołaniu funkcji, to lhs zostanie również umieszczony jako pierwszy argument! Powodem tego jest to, że w większości przypadków uzyskuje się najbardziej czytelny kod . Na przykład iris %>% subset(1:nrow(.) %% 2 == 0)
to równoważne iris %>% subset(., 1:nrow(.) %% 2 == 0)
, ale nieco bardziej zwarte. Możliwe jest obejście tego zachowania przez zamknięcie rs w nawiasach klamrowych. Na przykład: 1:10 %>% {c(min(.), max(.))}
to , co odpowiada c(min(1:10), max(1:10))
.