/ Manipulador híbrido para dplyr - r, dplyr, rcpp

Manipulador híbrido para dplyr - r, dplyr, rcpp

Eu estou escrevendo um manipulador híbrido para dplyr, e eu estou querendo saber duas coisas sobre o código em dplyr.cpp:

  • A opção na.rm é usada como modelo e não é passada como um parâmetro para as classes Sd, Var, Sum etc. Qual é o motivo?
  • O que faz a linha TAG(arg3) == R_NaRmSymbol (linha 54) significar?

Respostas:

2 para resposta № 1

Embora eu não seja o autor do código, aqui estão minhas melhores suposições em resposta às suas perguntas:

A opção na.rm é usada como modelo e não é passada como um parâmetro para as classes Sd, Var, Sum etc. Qual é o motivo?

Provável para eficiência em tempo de execução - dplyr tenta mover o cálculo do tempo de execução para o tempo de compilação quando possível. Isso geralmente é feito por meio do uso de modelos.

O que significa a linha TAG (arg3) == R_NaRmSymbol (linha 54)?

Nodes em um pairlist R tem um TAG atributo, que geralmente se refere ao nome do formal. Conseqüentemente, dplyr usa isso para encontrar o formal com o nome na.rm. R armazena em cache muitos dos símbolos usados ​​com frequência src / main / names.c -- Você deveria ver NaRmSymbol lá.

Então, efetivamente, o código encontra o valor real do argumento associado ao na.rme faz coisas baseadas em sua veracidade.