Проверьте нулевые значения в R tis - PullRequest
0 голосов
/ 17 марта 2020

Я редко использую R, но мне нужна вспомогательная функция, которую кто-то дал мне. У меня есть следующая строка:

league_model_19 <- gam(SHOT_MADE_FLAG ~ ti(LOC_X) + ti(LOC_Y) + ti(LOC_X, LOC_Y), data = shots)

Но, когда я ее запускаю, появляется следующее сообщение об ошибке:

Error in ti.default(LOC_X) : 
  'tif' and 'freq' cannot both be NULL if 'x' is not a ti

Я видел, как в сети кто-то пишет код в виде:

if(is.null(tif)){
    if(is.null(freq))
      stop("'tif' and 'freq' cannot both be NULL if 'x' is not a ti")
    else tif <- freq2tif(freq)
  }

Но я не знаю, как интегрировать это в мою текущую линию или есть ли более эффективный способ сделать это. Кто-нибудь знает, как избавиться от этого сообщения об ошибке, чтобы я мог продолжить свой код? Дайте мне знать, если понадобится больше деталей.

Редактировать: Добавлен минимальный фрейм данных для воспроизведения ошибки (player_id и player_name здесь не используются, просто оставлены там). Это данные, которые отображаются в виде «снимков» в строке кода, которой я поделился:

PLAYER_ID,PLAYER_NAME,LOC_X,LOC_Y,SHOT_MADE_FLAG
1627759,Jaylen Brown,-20,19,0
1627759,Jaylen Brown,-29,168,1
1627759,Jaylen Brown,7,30,1
1627759,Jaylen Brown,9,6,0
1627759,Jaylen Brown,-176,186,0

1 Ответ

0 голосов
/ 18 марта 2020

Похоже, у вас либо не загружен пакет mgcv , либо загружен пакет tis после mgcv и первый маскирует последний.

Если вы не загрузили mgcv , добавьте library('mgcv') к вашему сценарию перед установкой gam().

Если у вас есть mgcv загружен, но также загружен пакет tis , оба пакета предоставляют функцию ti(), и кажется, что tis один находится первым в пути поиска. Лучше всего использовать полное имя для ti(), чтобы сообщить R, какой ti() вы хотите использовать.

Попробуйте:

league_model_19 <- gam(SHOT_MADE_FLAG ~ mgcv::ti(LOC_X) + 
                         mgcv::ti(LOC_Y) + 
                         mgcv::ti(LOC_X, LOC_Y),
                       data = shots)

Вы можете также измените сценарий на загрузку mgcv после tis , но это может вызвать дальнейшие проблемы при использовании ti() из пакета tis ; в этом случае вы можете использовать tis:ti() в этих местах.

...