/ / Hybrid handler dla dplyr - r, dplyr, rcpp

Hybrydowy program obsługi dla dplyr - r, dplyr, rcpp

Piszę sterownik hybrydowy dla dplyra i zastanawiam się nad dwoma rzeczami na temat kodu dplyr.cpp:

  • Opcja na.rm jest używana jako szablon i nie jest przekazywana jako parametr do klas Sd, Var, Sum itd. Jaki jest tego powód?
  • Co robi linia TAG(arg3) == R_NaRmSymbol (linia 54) oznaczać?

Odpowiedzi:

2 dla odpowiedzi № 1

Chociaż nie jestem autorem kodu, oto moje najlepsze domysły na odpowiedzi na twoje pytania:

Opcja na.rm jest używana jako szablon i nie jest przekazywana jako parametr do klas Sd, Var, Sum itd. Jaki jest tego powód?

Prawdopodobnie dla wydajności w czasie pracy - dplyr próbuje przenieść obliczenia od czasu wykonania do czasu kompilacji, gdy jest to możliwe. Często odbywa się to poprzez użycie szablonu.

Co oznacza linia TAG (arg3) == R_NaRmSymbol (linia 54)?

Węzły na liście pary R mają TAG atrybut, który zwykle odnosi się do nazwy formalnej. Stąd, dplyr używa tego do znalezienia formalnego z nazwą na.rm. R przechowuje wiele często używanych symboli w src / main / names.c -- powinieneś zobaczyć NaRmSymbol tam.

Tak więc, skutecznie, kod znajduje rzeczywistą wartość argumentu związaną z formalną na.rmi robi rzeczy oparte na jego prawdziwości.