Ошибка в R с функцией GA-пакета

Здесь много правильных ответов, но я хотел добавить это (для полноты):

Если вы в нижней части файла cpp реализации выполняете явное инстанцирование всех типов, которые будут использоваться шаблоном с, компоновщик сможет найти их как обычно.

Изменить: добавление примера явного создания экземпляра шаблона. Используется после того, как шаблон определен, и определены все функции-члены.

template class vector<int>;

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

Вышеприведенный пример бесполезен, поскольку вектор полностью определен в заголовках, за исключением случаев, когда common include file (precompiled header?) использует extern template class vector<int>, чтобы не создавать его из всех других (1000?) файлов, которые используют вектор.

0
задан gilberke 13 July 2018 в 17:44
поделиться

1 ответ

Эта ошибка на самом деле встречается на предыдущей строке mod <- lm(y ~ x[,string==1]).

Измените свою фитнес-функцию, чтобы распечатать строку

fitness <- function(string) { 
   mod <- lm(y ~ x[,string==1])
   -BIC(mod)+sum(string*-1)*100  # fitness function value
}

и запустить ga. Вы увидите, что это происходит последовательно, когда строка - это все нули.

Проверить непосредственно.

string = rep(0,13)
fitness(string)
 [1] 0 0 0 0 0 0 0 0 0 0 0 0 0
Error in x[, ii] : subscript out of bounds

mod <- lm(y ~ x[,string==1])
Error in x[, ii] : subscript out of bounds

Проблема в том, что вы пытаетесь установить линейную модель с переменными предиктора NO. Когда вы включаете этот штрафный срок, он переносит число переменных в ноль. Без этого термина вы вряд ли испытаете все нули.

0
ответ дан G5W 17 August 2018 в 12:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: