Are you sure you didn't run
mode(Book1)
by mistake? You already tested
class(Book1[, "SPI"])
and got "numeric". If you run mean(Book1[, "SPI"]), do you get an error or a number? If you get a number, the the problem lies with sens.slope not seeing the data as numeric. If you get an error, then somehow your result using class() is misleading me.
Also, try running sens.slope on another data frame with data others can reproduce.
DF <- data.frame(SPI = rnorm(100))
sens.slope(DF[, "SPI"])
I have to stop for the day but others should be able to help you.