r语言 - 我想在 for 循环代码中使用列表. list[[i]] 工作正常,但为什么 res <- vector(



我正在使用for loop来循环两个不同的矩阵。代码如下所示:

x <- matrix(rnorm(1806),7,258)
x2 <- matrix(rnorm(1032),4,258)
samp_size <- 3
iter <- 1000
subs <- matrix(sample(1:nrow(x), samp_size*iter, replace=T),
ncol=samp_size, byrow=T)
subs2 <- matrix(sample(1:nrow(x2), samp_size*iter, replace=T),
ncol=samp_size, byrow=T)
for(j in 1:nrow(subs)){
ad <- x[subs[j,],]
ad1 <- x2[subs2[j,],]
rd <- rbind(ad,ad1)
dis <- dist(rd, method="euclidian")
#CV <- sd(unlist(rd), na.rm=TRUE)/mean(unlist(rd), na.rm=TRUE)*100
dis2 <- dis[dis!=0]
list[[j]] <- mean(dis2)
l <- unlist(list)
l <- na.omit(l)
sdis <- dist(ad, method="euclidian")
sdis2 <- sdis[sdis!=0]
res <- vector("list", 1000)
res[[j]] <- mean(sdis2)
l2 <- unlist(res)
l2 <- na.omit(l2)
}

list[[j]]工作得很好。

每次迭代的结果将作为基于j值的列表元素添加到其中。

但是,res[[j]]最终充满了NULL,只有最后一个元素包含值。

我不确定这里发生了什么。我希望res[[j]]list[[j]]一样行事。

非常感谢帮助。

也许初始化res

# before the loop
res <- rep(list(NA),nrow(subs))
# or in the loop
res <- rep(list(NA),1000) 
# or 
res <- list(numeric(1000))

相关内容

最新更新