Я хотел бы найти текст кода 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, и сообщением об ошибке выше. Я ищу помощь в преодолении этого разрыва.
Теперь мне кажется, что это стандартное сообщение об ошибке для некоторой версии eval, 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
}
Задача ещё не решена.
Других решений пока нет …