R:我该如何进行数据[[k]]计算

问题描述

我有一个样本中的数据集,没有替换,像这样:

data.c

data.c

data.c

该图显示了每种物种的频率,并且有50个data.c [[k]]这样。 现在,我正在尝试进行折刀重采样(不进行替换)以估计覆盖率,以下代码

data.c <- sapply(1:50,function(k)table(data[,k])) #freq
mdata <- sapply(1:50,function(k)sum(data.c[[k]]==1)) 
True_c <- 1- sum(nP*(exp(lchoose(N-data.c[[k]],i))/exp(lchoose(N,i))))  
##True_c function shows error message##

我的结果显示“ N-data.c中的错误:二进制运算符的非数字参数” 我想用N(种群大小)减去物种的频率来做True_c,并执行“选择”功能,我该怎么做或调整代码

我的整个代码如下所示:

### without replacement
for (seed in c(99,100)){
  set.seed(seed)
    for (s in c(100,1000)){
      sdata <- rlnorm(s,1)
      p <- sdata/sum(sdata)
      gn <- P*s*10
      gn <- round(gn)
      M <-replace(gn,gn==0,1) #or M=gn[gn==0]=1
      N <- sum(M); N
      np <- M/N #new prob
      pop_index = rep(1:s,time=M)
      for (i in c(100,500,1000,5000,N))
        {
        data=replicate(50,sample(pop_index,i,replace = FALSE,prob = NULL)) 
        data.c=sapply(1:50,k])) #freq
        mdata=sapply(1:50,function(k)sum(data.c[[k]]==1)) #each group,total freq=1
        True_c <- 1- sum(nP*(exp(lchoose(N-data.c,i))))
        c.hat <- (1-(1-(i/N))*(mdata/i)) #geo
        bias=mean(c.hat)-True_c
        var=var(c.hat)
        cat("sample_size","\n","True_C=",True_c,"bias =",bias,"variance=",var,"\n")
      }
    }
  }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)