Как исправить сообщение об ошибке «Ошибка в цикле (pwfst, 3): нечисловой аргумент математической функции» - PullRequest
0 голосов
/ 02 января 2019

Я использую

pwfst <-stamppFst(gl, nboots=1, percent=95, nclusters=1)
round(pwfst,3)

Это прекрасно работает, если nboots = 1,, но при попытке nboots = 3, я получаю следующую ошибку:

Error in round(pwfst, 3) : non-numeric argument to mathematical function

Я хочу в конечном итоге использовать nboots = 100

Я прочитал несколько сообщений с

non-numeric argument to mathematical function

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

Кто-нибудь есть идеи, пожалуйста?спасибо.

РЕДАКТИРОВАТЬ: pwfst это не список.Он имеет эту форму - есть еще 5 столбцов

              Bees Nest Ridge_12 Bees Nest Ridge_15 Broken Back Trail Cousins Creek
Bees Nest Ridge_12                 NA                 NA                NA            NA
Bees Nest Ridge_15              0.092                 NA                NA            NA
Broken Back Trail               0.124              0.067                NA            NA
Cousins Creek                   0.396              0.352             0.376            NA
Sawpit Rd                       0.104              0.046             0.077         0.349
Wallaby Rocks                   0.450              0.384             0.421         0.540
Bees Nest Ridge_13              0.161              0.098             0.132         0.403
Wingen Maid                     0.433              0.376             0.409         0.537
Bees Nest Ridge_14              0.086              0.025             0.056         0.354

Второе редактирование:

str(pwfst)

возвращает

num [1:9, 1:9] NA 0.0922 0.1243 0.3964 0.1038 ...
 - attr(*, "dimnames")=List of 2
  ..$ : chr [1:9] "Bees Nest Ridge_12" "Bees Nest Ridge_15" "Broken Back Trail" "Cousins Creek" ...
  ..$ : chr [1:9] "Bees Nest Ridge_12" "Bees Nest Ridge_15" "Broken Back Trail" "Cousins Creek" ...

Надеюсь, этого достаточно, чтобы кто-нибудь смог мне помочь.Спасибо, Рут П

1 Ответ

0 голосов
/ 02 января 2019

Документация для функции stamppFst() гласит: «Если nboots <2, начальная загрузка не выполняется и, следовательно, возвращается только матрица значений Fst».Поэтому, когда <code>pwfst является результатом анализа с использованием 1 загрузки, вы предоставляете матрицу для функции round, которую может обрабатывать функция round.В других случаях (когда nboots> = 2) вы предоставляете список для функции round, которую он не может обработать таким способом.

Если pwfst - это список, вы можете запустить lapply(pwfst, round) так, чтобы он бегал по каждой матрице в списке.

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