我写了一个循环,生成了随机数据集的平均值和标准偏差。随机大小取决于每个样本的样本大小。 在这里,我有80、50、32和20的样本量, 所以我写了一个如下的循环。
但是,我一直收到错误消息 “ CT.raw $ average [i,] <-mean(as.numeric(unlist(as.data.frame(CT.raw [i,: 矩阵上的下标数目不正确”
棘手的是,我选择了一些数字并插入为i, 均值和标准差可以很好地解决。 我已经尝试了很多次,但是还没有弄清楚我做错了什么地方。
示例原始数据集如下所示:
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)
}
}
}