我的程序显示以下错误:'argument'length.out'的长度必须为1'。我认为我没有犯任何错误

时间:2013-11-01 18:00:24

标签: r

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

    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。 那为什么会出现这个错误?

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