LucyBM
LucyBM

Reputation: 27

Presence-absence matrix

I'm trying to generate a presence-absence matrix grid based on the example code from the letsR package and lets.presab.points() function.

Example code:

species <- c(rep("sp1", 100), rep("sp2", 100),
             rep("sp3", 100), rep("sp4", 100))
x <- runif(400, min = -69, max = -51)
y <- runif(400, min = -23, max = -4)
xy <- cbind(x, y)
PAM <- lets.presab.points(xy, species, xmn = -93, xmx = -29, 
                          ymn = -57, ymx = 15)
summary(PAM)

My code:

records <- read.csv("directoryremovedforprivacy.csv")
x <- records$lon
y <- records$lat
xy <- cbind(x, y)
PAM2 <- lets.presab.points(xy, records, xmn = -11.5, xmx = 3,
                          ymn = 49, ymx = 61)
summary(PAM2)

However I get the following error:

Error in xy[pos, , drop = FALSE] : (subscript) logical subscript too long
In addition: Warning message:
In xtfrm.data.frame(x) : cannot xtfrm data frames
> summary(PAM2)
Error in h(simpleError(msg, call)) : 
  error in evaluating the argument 'object' in selecting a method for function 'summary': object 'PAM2' not found

Upvotes: 0

Views: 267

Answers (1)

AndrewGB
AndrewGB

Reputation: 16836

According to the error message, the issue is probably with records in lets.presab.points. It expects a list of species, but you are trying to give it a dataframe. So, in your example code, species is a character vector, so it needs to be the same format for your code too. So, you might need to do something like this (although I'm uncertain what the format of your records data is):

library(letsR)

PAM2 <- lets.presab.points(xy, records$species, xmn = -11.5, xmx = 3,
                          ymn = 49, ymx = 61)

species needs to be the same length as xy.

Upvotes: 2

Related Questions