我写了一个R语言程序,但是发现最外面的循环只进行了一次,不知道问题出在哪里,请各位大神帮忙看一下~
setwd("D:/RBook/")
Fa=read.csv(file="D:/RBook/imp.csv",stringsAsFactors = default.stringsAsFactors())
i=1
j=1
St=c("")
Sp=c("")
DBH=0
SpName=c("")
RDBH=0
RABD=0
Imp=0
Station=c("")
Species=c("")
Alldata=data.frame(Station="example",Species="example",Imp=0)
while(Fa$生态站代码[i]!=NA)
{
i=i
j=1
while(Fa[i,1]==Fa[i+1,1])
{
St[j]=as.character(Fa[i,1])
Sp[j]=as.character(Fa[i,2])
DBH[j]=Fa[i,3]
i=i+1
j=j+1
}
St[j]=as.character(Fa[i,1])
Sp[j]=as.character(Fa[i,2])
DBH[j]=Fa[i,3]
Stin=data.frame(St,Sp,DBH)
TDBH=sum(Stin$DBH)
Tnid=j
SpName=as.character(unique(Stin$Sp))
Nsp=length(SpName)
l=1
m=1
for(l in 1:Nsp)
{
Nid=0
SpDBH=0
m=1
for(m in 1:Tnid)
{
if(SpName[l]==Stin$Sp[m])
{
Nid=Nid+1
SpDBH=SpDBH+Stin$DBH[m]
}
}
RDBH[l]=SpDBH/TDBH
RABD[l]=Nid/Tnid
Imp[l]=(RDBH[l]+RABD[l])/Nsp
Station[l]=as.character(Stin$St[m])
Species[l]=as.character(SpName[l])
l=1
}
Dfrm=data.frame(Station,Species,Imp)
Alldata=rbind(Alldata,Dfrm)
i=i+1
}
Result=Alldata[-1,]
write.csv(Result,file="D:/Rbook/result.csv",quote=FALSE)