2017-09-14 2 views
0

Cette question a peut-être été répétée. Mais même après avoir parcouru les liens précédents, je ne suis pas en mesure de résoudre ce problème.formatDistData(), Les distances doivent être numériques

Je suis en train d'utiliser la fonction formatDistData() de l'emballage non marqué, cependant, lors de l'exécution du code

yDat <- formatDistData(Detects1, distCol="distance", transectNameCol="transect", dist.breaks=db) 

je reçois une erreur disant "The distances must be numeric". J'ai déjà exécuté la fonction as.numeric() mais le code affiche la même erreur.

Voici comment mes données sont affichées. J'ai transect dans une colonne et distance dans l'autre. Sur la droite, vous pouvez voir que la distance est une valeur num et que le transect est chr. Si quelqu'un est capable de me dire ce que je dois faire pour que cela fonctionne ce serait une grande

Data

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")) 
+0

Veuillez fournir un petit exemple de vos données sous une forme facile à coller. –

+0

Il serait utile si vous faites votre problème reproductible: https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example –

+0

@ RomanLuštrik Est-ce que ça va? – Jamie

Répondre

0

La sortie dput me montre que vous fournissez un tbl_df (un tidyverse Tibble) plutôt que d'un standard data.frame. Il semble que formatDistData étouffe sur les croquettes. Si vous faites:

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))) 

Cela fonctionnera.

Notez que vous n'avez pas fourni db, j'ai donc utilisé quantile pour définir des ruptures arbitraires pour que l'exemple fonctionne.