Как установить значение по умолчанию для параметра SEXP в Rcpp - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть функция Rcpp с необязательным аргументом, который является сроком погашения финансового инструмента.Это может быть дано как строка (например, «2y») или как целое число.Если значение не указано, функция должна использовать целое число по умолчанию.Как установить значение по умолчанию для этого аргумента?

Я определил функцию с аргументом SEXP, код проверяет, является ли это строкой или нет, и в зависимости от этого преобразует этот срок в фактическую дату в дваразличные пути.Однако я не могу установить значение по умолчанию для аргумента SEXP.Кажется, это основной вопрос, но я немного погуглил и ничего не смог найти по этому поводу.

Date CPPConvertDate(Date ParamDate, SEXP MaturityDate = 1) {
  Date Result ;
  const int type_Matu = TYPEOF(MaturityDate) ;

  if (type_Matu == 16){
   std::string MaturityDate_string = as<std::string>(MaturityDate) ;
   //' DO STUFF
  } else {
   int MaturityDate_int = as<int>(MaturityDate) ;
     //' DO OTHER STUFF

  }
  return (Result) ;
}

Компилятор говорит мне: «Невозможно инициализировать параметр типа SEXP со значением R типа int», поэтомудовольно ясно, что я не могу использовать 1 значение по умолчанию для MaturityDate.Если возможно, я бы хотел, чтобы у меня не было двух разных функций, одна с аргументами int и другая с аргументом string.

1 Ответ

0 голосов
/ 14 февраля 2019

Слушайте компилятор, потому что это источник ошибок.SEXP не имеет присваивания от 1, так как это тип объединения - вот почему у нас есть все эти wrap() функции, которые возвращают SEXP при всех возможных входах.

Так что, если это Date, используйте тип даты.Я делал это в RQuantLib (что в итоге привело к Rcpp) уже более десяти лет.Если вам нужен смешанный тип для различного поведения, то, возможно, вам будет сложно найти значение по умолчанию в любом случае.

Также: не "RCPP".RCPP, пожалуйста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...