Запомните пробел: нахождение текста кода C++, вызываемого функцией R

Я хотел бы найти текст кода C++, вызываемого функцией R, в частности, функцией "_dplyr_summarise_impl" который вызывается summarise_impl. Более конкретно, я хотел бы найти бит кода, который предшествует тому, который возвращает сообщение об ошибке "

Error in summarise_impl(.data, dots) :
Evaluation error: argument "yes" is missing, with no default.

Я предполагаю, что "да" в приведенном выше коде варьируется, но что оно предоставляется каким-то другим битом dplyr или связанной с ним тидиверсом, поскольку ни один из моего кода не имеет аргумента "да", который должен отсутствовать. Или это может быть базовый код R, называемый кодом Tidyverse. Но в любом случае между сообщением об ошибке и последней функцией, которую я мог видеть с помощью traceback, есть пробел, вызванный, как я полагаю, следствием того, что traceback не может найти путь через вызываемый код C++. Я предполагаю, что если я смогу найти код, который должен был предоставить аргумент "да", это скажет мне, что происходит не так. Но есть разрыв между последней функцией, которую предоставляет traceback, и сообщением об ошибке выше. Я ищу помощь в преодолении этого разрыва.

Теперь мне кажется, что это стандартное сообщение об ошибке для некоторой версии e val, base или tidyverse, которая вызывается либо _dplyr_summarise_impl, либо некоторой вызываемой ею функцией. Многие, возможно, все из основных глаголов dplyr имеют невысказанную функцию вида <function>_implи все эти функции возвращают сообщения об ошибках, очень похожие на приведенные ранее. Поэтому я подозреваю, что они могут вызывать общий процесс сообщения об ошибке.

Я только что нашел текст _dplyr_summarise_impl здесь, в dplyr/src/RcppExports.cpp. Это приближает меня на один шаг, но я не знаю достаточно C++, чтобы знать, какая из этих строк, скорее всего, будет вызывать функцию, вызывающую ошибку. Думаю, я прочитаю главу C++ в Advanced R дальше.

// summarise_impl
SEXP summarise_impl(DataFrame df, QuosureList dots);
RcppExport SEXP _dplyr_summarise_impl(SEXP dfSEXP, SEXP dotsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< DataFrame >::type df(dfSEXP);
    Rcpp::traits::input_parameter< QuosureList >::type dots(dotsSEXP);
    rcpp_result_gen = Rcpp::wrap(summarise_impl(df, dots));
    return rcpp_result_gen;
END_RCPP
} 

0 ответов

Другие вопросы по тегам