Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我想在for循环代码中使用列表。list[[i]]工作正常,但res_R_List_For Loop - Fatal编程技术网

我想在for循环代码中使用列表。list[[i]]工作正常,但res

我想在for循环代码中使用列表。list[[i]]工作正常,但res,r,list,for-loop,R,List,For Loop,我使用for循环遍历两个不同的矩阵。代码如下所示: 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 <- matr

我使用for循环遍历两个不同的矩阵。代码如下所示:

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)
}
列表[[j]]工作正常

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

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

我不确定这里发生了什么。我希望res[[j]]的行为方式与list[[j]]相同

非常感谢您的帮助。

可能会:


您在哪里初始化列表?当你在循环中初始化res时,问题是你在循环的每次迭代中都初始化res,所以除了lastAs@AndrewGustar指出的问题外,它每次都会被擦除,这就是res@Antsushi的问题是的,只需在循环之前初始化它一次。您的代码根本不会初始化list,尽管它应该初始化,所以它不会被重置。顺便说一句,最好避免变量名,例如list,它们也是R函数的名称。这常常导致混乱!
# before the loop
res <- rep(list(NA),nrow(subs))
# or in the loop
res <- rep(list(NA),1000) 
# or 
res <- list(numeric(1000))