0

我正在为生态学模型创建一个数据,该模型称为随机分数模型。该模型的程序:

    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。那为什么会显示这个错误呢?

4

1 回答 1

1

你确定你不是那个意思

for(ii in 1:(nspec-1)){
  ...
}

代替

for(ii in 1:nspec-1){
  ...
}

1:nspec-1 将产生一个从 0 开始的大小 nspec 向量。

1:(nspec-1) 从 1 开始,大小为 nspec-1

于 2013-11-01T18:11:31.363 回答