Как использовать мексгаусс из пакета retimes с ячейками с NA

Я продолжаю получать эту ошибку, когда пытаюсь запустить mexgauss (из пакета retimes), вот образец данных.

`data1 $ Нет [1] 1256 1292 1299 1268 1551 1362 1462 1317 1354 1429 1552 [12] 1291 1355 1347 1228 1424 1769 1352 1268 1428 NA NA [23] NA NA NA

mexgauss (data1 $ None) Ошибка в if (k [3]> 0) start [3] ‹- (k [3] / 2) ^ (1/3) else start [3]‹ - 0.8 *: отсутствует значение, где Требуется ИСТИНА / ЛОЖЬ

Я хочу запустить эту команду для этого набора данных для моей диссертации. Я не могу понять, что это за ошибка. Кроме того, я не уверен, как взять все NA и сказать R, что они ложны.

У кого-нибудь есть какие-либо идеи? Большое спасибо. Для меня это будет значить весь мир.


person Chad Vachon    schedule 02.03.2016    source источник
comment
несколько вариантов, если функция имеет аргумент na.rm, используйте это. Измените NA перед запуском функции с помощью data1$None[data1$None == NA] = 0 или используйте tryCatch(mexgauss(data1$None), error =function(e) 0) Если вы не можете заменить 0 на NA, я не уверен ...   -  person Ted Mosby    schedule 02.03.2016
comment
Ни то, ни другое не работает. Однако, спасибо!   -  person Chad Vachon    schedule 04.03.2016
comment
Я использовал такую ​​команду, чтобы вручную исключить строки с NA. ‹Мексгаусс (data1 $ None [1:24])   -  person Chad Vachon    schedule 04.03.2016


Ответы (1)


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

library(retimes)

# make mock datasets
  x1 <- 1:10
  x2 <- c(1:9, NA)

# try to run mexguass()
  mexgauss(x1) # no missing data: it works fine
  mexgauss(x2) # returns cryptic error OP mentioned

# solution: wrap data with NA in na.omit
  mexgauss(na.omit(x2)) # works fine
person grmccreath    schedule 29.08.2018