formatDistData(), расстояния должны быть числовыми
Этот вопрос мог быть повторен. Но даже пройдя по предыдущим ссылкам, я не могу решить эту проблему.
Я пытаюсь использовать функцию formatDistData() из неотмеченного пакета, однако, при запуске кода
yDat <- formatDistData(Detects1, distCol="distance", transectNameCol="transect", dist.breaks=db)
Я получаю сообщение об ошибке "The distances must be numeric"
, Я уже запустил функцию as.numeric(), но код отображает ту же ошибку.
Вот как выглядят мои данные. У меня есть трансект в одном столбце и расстояние в другом. Справа вы можете видеть, что расстояние - это числовое значение, а трансект - chr. Если кто-то может сказать мне, что мне нужно сделать, чтобы это работало, это было бы здорово
transect,distance
NT1,14
NT1,14
NT1,20
NT1,20
NT1,10
NT1,15
> dput(Detects1)`
structure(list(transect = c("NT1", "NT1", "NT1", "NT1", "NT1",
"NT1", "NT1", "NT1", "NT1", "NT1", "NT2", "NT2", "NT2", "NT2",
"NT2", "NT2", "NT2", "NT2", "NT2", "NT2", "NT2", "NT2", "NT3",
"NT3", "NT3", "NT3", "NT3", "NT3", "NT3", "NT3", "NT3", "NT3",
"NT3", "NT3", "NT3", "NT3", "NT3", "NT3", "NT4", "NT3", "NT4",
"NT4", "NT4", "NT5", "NT5", "NT5", "NT5", "NT5", "SCC1", "SCC1",
"SCC1", "SCC1", "SCC1", "SCC1", "SCC1", "SCC1", "SCC3", "SCC3",
"SCC4", "SCC4", "SCC4", "SCC4", "SCC4", "SCC5", "SCC5", "SCC5",
"SCC5", "SCC5", "SCC5", "SCC5", "Urban1", "Urban1", "Urban1",
"Urban2", "Urban2", "Urban2", "Urban2", "Urban2", "Urban2", "Urban2",
"Urban4", "Urban4"), distance = c(14, 14, 20, 20, 10, 15, 5,
10, 15, 6, 10, 5, 5, 40, 7, 7, 5, 5, 12, 12, 2, 2, 5, 16, 6,
13, 3, 7, 5, 2, 0, 16, 10, 20, 20, 15, 10, 11, 17, 17, 12, 5,
3, 5, 8, 21, 12, 12, 15, 15, 7, 12, 3, 5, 6, 3, 2, 7, 8, 21,
5, 5, 11, 4, 12, 2, 1, 2, 5, 14, 10, 8, 3, 3, 11, 4, 9, 3, 7,
5, 2, 7)), .Names = c("transect", "distance"), row.names = c(NA,
-82L), spec = structure(list(cols = structure(list(transect =
structure(list(), class = c("collector_character",
"collector")), distance = structure(list(), class = c("collector_number",
"collector"))), .Names = c("transect", "distance")), default =
structure(list(), class = c("collector_guess",
"collector"))), .Names = c("cols", "default"), class = "col_spec"), class =
c("tbl_df", "tbl", "data.frame"))
1 ответ
dput
вывод показывает мне, что вы предоставляете tbl_df
(а tidyverse
тибл) а не стандарт data.frame
, Кажется, что formatDistData
задыхается от тиблов. Если вы делаете:
library(unmarked)
yDat <- formatDistData(
as.data.frame(Detects1), # coerce to standard data.frame
distCol="distance",
transectNameCol="transect",
dist.breaks = quantile(Detects1$distance, seq(0.1, 0.9, by = 0.1)))
Это будет работать.
Обратите внимание, что вы не предоставили db
так я использовал quantile
определить произвольные перерывы для примера на работу.