require(raster)
require(dplyr)
set.seed(666)
r <- raster(matrix(
sample.int(10000), 100))
a<-SpaDES.tools::adj(numCol=ncol(r),numCell=ncell(r),cells=1:ncell(r),
directions=8, include=T, pairs=T, sort=F, returnDT=T,
numNeighs=8)
# assign values to cell numbers
cells<-1:ncell(r)
vals<-r[]
a1=as.data.frame(a)%>%arrange(from)%>%
mutate(count=tabulate(unique(a)$from)[a$from])
counter=a1%>%group_by(from)%>%tally()%>%select(n)%>%
unlist%>%sapply(.,function(x)1:x)%>%unlist
a2=a1%>%mutate(counter=counter)
a3=dplyr::bind_cols(a2,
toVals=plyr::mapvalues(unlist(a[,2]),from=cells,to=vals))%>%
arrange(from)
a4=data.table::dcast(data.table::setDT(a3), from ~ counter, value.var = "toVals")