#APdobs_NTPD.fn函数:计算NTPD观察值,长度为focalsp的长度
focalsp<-read.csv("1.csv",header=T,fileEncoding="GBK") ##目标个体的种名
pdmatrix<-read.csv("2.csv",header=T,fileEncoding="GBK")#系统发育距离矩阵
sample<-read.csv("1.csv",header=T,fileEncoding="GBK")#周围邻体的其他种类
as.matrix(focalsp)
as.matrix(pdmatrix)
as.matrix(sample)
APdobs_NTPD.fn =function(focalsp,pdmatrix,sample)
#focalsp为目标个体的种名,pdmatrix为系统发育距离矩阵(标准化成0-1,参考Liza的课件),spinsample为周围邻体的其他种类
{
pdtofocal.min =numeric()
for(i in 1:length(focalsp))
{
spinsample=rownames(sample)[sample[,i]!=0]
spinsample.abund=sample[,i][sample[,i]!=0]
focalsp.pos=which(rownames(pdmatrix)==focalsp[i])
spinsample.pos=match(spinsample,colnames(pdmatrix))
pdtofocal=numeric()
for(j in 1:length(spinsample.pos))
{
pdtofocal[j]=pdmatrix[focalsp.pos,spinsample.pos[j]]
}
pdtofocal.min[i]=min(pdtofocal)
}
return(pdtofocal.min)
}
write.table(APdobs_NTPD.fn,"APdobs_NTPD.fn")
报错:Error in as.data.frame.default(x[[i]], optional = TRUE) :
cannot coerce class ‘"function"’ to a data.frame