#get community data
data(varespec)
v <- varespec
#randomly assign 'sites'
community.ids <- row.names(v)
site <- sample(c('a','b'), length(community.ids), replace =TRUE)
names(site) <- communities
site
# compute bray-curtis distance
bc <- as.matrix(vegdist(v))
# to remove redundant comparisons
bc[upper.tri(bc, diag = TRUE)] <- NA
# 'melt' distance matrix into data.frame of pairs
library(reshape)
bcl <- melt(bc)
bcl <- na.omit(bcl)
names(bcl) <- c('row', 'column', 'value')
# identfy pairs from same site
bcl$rowSite <- site[ match( bcl$row, names(site)) ]
bcl$colSite <- site[ match( bcl$column, names(site)) ]
head(bcl)
same <- bcl$rowSite == bcl$colSite
different <- mean ( bcl[ -which(same) , 'value' ] )
samesies <- mean( bcl[ which(same) , 'value' ] )