Dla użytkowników Pythona uczących się R, szybką odpowiedzią byłoby to, że ...jest to odpowiednik słowa kluczowego input ( def func(**kwargs)) w języku R
Funkcja f,, przechowuje wszystkie argumenty wejściowe oprócz pierwszego w zmiennej wielokropka. Aby uzyskać dostęp do jego zawartości, najłatwiej jest przekonwertować go na listę (1). Głównym zastosowaniem jest jednak przekazywanie argumentów do podfunkcji, co nie wymaga konwersji (2).
Dlaczego w # 2 ponownie wywołujesz tę samą funkcję f?
Jiapeng Zhang
1
@JiapengZhang To przykład funkcji rekurencyjnej. f()jest wywoływany wielokrotnie z różnymi argumentami za każdym razem. Uruchom kod i zobacz, czy rozumiesz, co się dzieje.
Richie Cotton,
2
Byłby to świetny przykład, aby wykazać ...length(), jak również
MichaelChirico
19
Powinieneś udać się do „R Language Definition”, sekcja 2.1.9 Kropka-kropka . Jest dostarczany w pakiecie z instalacją R. Uruchom help.start()sesję interaktywną, aby wyświetlić pomoc HTML, i kliknij łącze Definicja języka R. Możesz również użyć wersji PDF lub HTML z głównej strony.
W każdym razie ...służy do dopasowywania nieokreślonych argumentów formalnych funkcji.
args(sapply)
function (X, FUN, ..., simplify = TRUE, USE.NAMES = TRUE)
NULL
sapply(mtcars, mean, trim = .5)
mpg cyl disp hp drat wt qsec vs am gear
19.2006.000196.300123.0003.6953.32517.7100.0000.0004.000
carb
2.000
Jak widać, zdałem, trim = .5chociaż nie jest to określony jako formalny argument sapplyfunkcji.
(zwróć uwagę, że ten przykład jest trywialny, możesz go użyć, sapply(mtcars, median)aby osiągnąć ten sam wynik)
...
jest to odpowiednik słowa kluczowego input (def func(**kwargs)
) w języku ROdpowiedzi:
Słowo używane do opisu
...
to „wielokropek”. Wiedza o tym powinna ułatwić wyszukiwanie informacji o konstrukcji. Na przykład pierwsze trafienie w Google to kolejne pytanie na tej stronie: Jak korzystać z funkcji wielokropka R podczas pisania własnej funkcji?źródło
dots
, np. Strona pomocy jest nazwana,?dots
a „wielokropek” nie jest nawet wymieniony na tej stronie?dots
nie działa dla mnie, ale?'...'
działa.Mały przykład na początek.
f <- function(x, ...) { dots <- list(...) #1 if(length(dots) == 0) return(NULL) cat("The arguments in ... are\n") print(dots) f(...) #2 } f(1,2,3,"a", list("monkey"))
Funkcja
f
,, przechowuje wszystkie argumenty wejściowe oprócz pierwszego w zmiennej wielokropka. Aby uzyskać dostęp do jego zawartości, najłatwiej jest przekonwertować go na listę (1). Głównym zastosowaniem jest jednak przekazywanie argumentów do podfunkcji, co nie wymaga konwersji (2).źródło
f()
jest wywoływany wielokrotnie z różnymi argumentami za każdym razem. Uruchom kod i zobacz, czy rozumiesz, co się dzieje....length()
, jak równieżPowinieneś udać się do „R Language Definition”, sekcja 2.1.9 Kropka-kropka . Jest dostarczany w pakiecie z instalacją R. Uruchom
help.start()
sesję interaktywną, aby wyświetlić pomoc HTML, i kliknij łącze Definicja języka R. Możesz również użyć wersji PDF lub HTML z głównej strony.W każdym razie
...
służy do dopasowywania nieokreślonych argumentów formalnych funkcji.args(sapply) function (X, FUN, ..., simplify = TRUE, USE.NAMES = TRUE) NULL sapply(mtcars, mean, trim = .5) mpg cyl disp hp drat wt qsec vs am gear 19.200 6.000 196.300 123.000 3.695 3.325 17.710 0.000 0.000 4.000 carb 2.000
Jak widać, zdałem,
trim = .5
chociaż nie jest to określony jako formalny argumentsapply
funkcji.(zwróć uwagę, że ten przykład jest trywialny, możesz go użyć,
sapply(mtcars, median)
aby osiągnąć ten sam wynik)źródło
trim
jest argumentemmean
funkcji....
Wsapply
to mechanizmtrim
zostać przekazanemean
.