将结果存储在列表中时出错

时间:2017-09-06 20:01:25

标签: r list

    res <- list()     
    for(i in 1:4){    
      for(j in 1:10){     
      res[[i]][j] <- j     
      }    
    }    

我无法将结果存储在名为“res”的列表中。当我运行此代码时,它显示超出界限[[i]]

的下标

3 个答案:

答案 0 :(得分:2)

res是一个空列表,因此您无法通过数字访问它的元素(尽管可以使用向量)。添加元素,它将起作用:

res <- list(0,0,0,0)

    for(i in 1:4){    
      for(j in 1:10){     
      res[[i]][j] <- j     
      }    
    }   

注意这种代码可能很慢;如果您已经知道每个向量中有多少东西,请创建适当大小的向量:

res <- list(numeric(10),numeric(10),numeric(10),numeric(10))

答案 1 :(得分:1)

你可以这样做:

res <- as.list(matrix(ncol=1,nrow=4))     
for(i in 1:4){    
  for(j in 1:10){     
    res[[i]][j] <- j     
  }    
}    

答案 2 :(得分:1)

map对此有用

library(purrr)
res <- map(1:4, ~map(1:10, ~.x))