没有循环时,循环不起作用

时间:2019-05-17 18:12:26

标签: r

我写了一个循环,生成了随机数据集的平均值和标准偏差。随机大小取决于每个样本的样本大小。 在这里,我有80、50、32和20的样本量, 所以我写了一个如下的循环。

但是,我一直收到错误消息 “ CT.raw $ average [i,] <-mean(as.numeric(unlist(as.data.frame(CT.raw [i,:   矩阵上的下标数目不正确”

棘手的是,我选择了一些数字并插入为i, 均值和标准差可以很好地解决。 我已经尝试了很多次,但是还没有弄清楚我做错了什么地方。

示例原始数据集如下所示:

https://rit0-my.sharepoint.com/:f:/g/personal/jc3992_ad_rit_edu/Ev4WZAETEg9OkT3u0esOS2cBq6Z8qTf8XkthdfGNA7VoBA?e=RkVFRA

    random.f <- function(Data){
  x=seq(from=2, to=1730, length=1729)
  Data=CT.raw
  set.seed(123)
  for (i in x){
  #for j = 11 to 91
  if (is.na(CT.raw[i,90])==FALSE)
  {
    index = sample(1:80, 35, replace=FALSE)
    index <- as.numeric(index)
    CT.raw <- as.data.frame(CT.raw)
  CT.raw$average[i,]= mean(as.numeric(unlist(as.data.frame(CT.raw[i,11:90])[c(index),])), trim = 0, na.rm = TRUE) 
  }else if(is.na(CT.raw[i,60])==FALSE & is.na(CT.raw[i,61])==TRUE)
    {
    index = sample(1:50, 25, replace=FALSE)
    index <- as.numeric(index)
  CT.raw$average[i,]= mean(as.numeric(unlist(as.data.frame(CT.raw[i, 11:90])[c(index),])), trim=0, na.rm=TRUE) 
  }else if(is.na(CT.raw[i,42])==FALSE & is.na(CT.raw[i,43])==TRUE)
    {
    index = sample(1:32, 20, replace=FALSE)
    index <- as.numeric(index)
  CT.raw$average[i,]= mean(as.numeric(unlist(as.data.frame(CT.raw[i,11:90])[c(index),])), trim=0, na.rm=TRUE)
  }else (is.na(CT.raw[i,30])==FALSE & is.na(CT.raw[i,31])==TRUE)
    {
    index = sample(1:20, 15, replace=FALSE)
    index <- as.numeric(index)
  CT.raw$average[i,]= mean(as.numeric(unlist(as.data.frame(CT.raw[i,11:90])[c(index),])), trim=0, na.rm=TRUE)
  }
  }
}

0 个答案:

没有答案