我正在为生态学模型创建一个数据,称为随机分数模型。 该模型的程序:
RelAbund<-randomfraction(3,1000)
它的输出是:
RelAbund
[,1] [,2]
[1,] 0.6083835 0.004510276
[2,] 0.2792227 0.003305510
[3,] 0.1123938 0.002514014
现在我想使用此矩阵的第一列创建数据。 我将这些数据存储在名为“数据”的列表中。 它是一个向量列表。向量包含连续的+ ve数字。 例如vector1是(1,2,3,4,5) vector2是(6,7,8,9,10,11,12,13) &安培;等等。 现在我编写的用于创建数据的程序如下:
CreateData<-function(nind,nspec)
RelAbund<-randomfraction(nspec,1000)
Data<-list()
Datavector<-c()
individuals<-c(0)
for(ii in 1:nspec-1){
**individuals<-seq(length.out=RelAbund[ii,1]*nind,from=tail(individuals,n=1)+1,by=1)**
Data<-lappend(Data,individuals)
}
Datavector<-seq(length=nind-(tail(tail(Data,n=1),n=1)),from=tail(tail(Data,n=1),n=1)+1,by=1)
Data<-lappend(Data,Datavector)
return(Data)
}
已加星标的行显示错误:
错误如下:
Error in seq.default(length.out = RelAbund[ii, 1] * nind, from = tail(individuals, : argument 'length.out' must be of length 1
nind是一个整数。 对我来说,参数length.out已经是长度为1。 那为什么会出现这个错误?
答案 0 :(得分:1)
你确定你没有意思
for(ii in 1:(nspec-1)){
...
}
而不是
for(ii in 1:nspec-1){
...
}
1:nspec-1将生成一个从0开始的大小nspec向量。
1:(nspec-1)从1开始,大小为nspec-1