Is adding a dummy value to the entire dataset correct way to deal with zero inflated Bray-Curtis Index in R (vegan/ Biodiversity) package? I'm trying to calculate the "cproj" i.e. the projection values of each species using add.spec.score package in BiodiveristyR. My datapoints however are zero inflated. I calculate the BrayCurtis index but it will not let me use the cmdscale since the BC scores generate NANs in the data set. However, if I add a dummy variable "1" to my entire dataset, the problem dissapears. However, I'm sure if this is the correct way to deal with this. Is there something else in the package which will allow me to deal with this type of error?
library(vegan)
library(BiodiversityR)
library(ggplot2)

set.seed(111)
sp1 <- sample(0:1,72, replace = TRUE)
sp2 <- sample(0:1,72, replace = TRUE)
sp3 <- sample(0:1,72, replace = TRUE)
sp4 <- sample(0:1,72, replace = TRUE)

wide.site <- data.frame(sp1, sp2, sp3, sp4)

wide.site <- wide.site + 1 #If I don't add 1 to this data, the cmdscale in third line from here will not work 

species.db <- vegdist(wide.site, method = "bray")
species.db <- vegdist(wide.site, method = "bray", upper = TRUE, diag = TRUE)
species.pcoa <- cmdscale(species.db, eig = TRUE, k = 3)

fish <- wide.site

speciesREL <- fish
for(i in 1:nrow(fish)){
  speciesREL[i, ] = fish[i, ] / sum(fish[i, ])
}

species.pcoa <- BiodiversityR::add.spec.scores(species.pcoa, speciesREL, method = "pcoa.scores")
species.pcoa$cproj


You have several rows in your data set that have only zeros. You get a warning of these:
Warning messages:
1: In vegdist(wide.site, method = "bray") :
  you have empty rows: their dissimilarities may be meaningless in method “bray”

Because you have several all-zero rows, you will end up with Bray-Curtis dissimilarity calculated as 0/0 and this is Not a Number (NaN) and you also get a warning
2: In vegdist(wide.site, method = "bray") : missing values in results

The warnings are there for purpose so that you can see that your data are not suitable for the methods you use. The most natural solution is to remove the empty rows that you cannot analyse.
k <- rowSums(wide.site) > 0
wide.site <- wide.site[k,]

It is absolutely wrong to add constant (1) to the data. It will ruin the Bray-Curtis dissimilarity.
You may think that you want to retain the empty rows, but then you cannot use dissimilarities of community composition: there is no compositional distance if there is no composition. The vegdist function will handle these cases with warnings: nothing vs. anything is dissimilarity 1 (nothing in common), but nothing vs. nothing is not a number. However, then you need to use tools that can handle such results.
