For循环仅将最终结果存储在R中

For循环仅将最终结果存储在R中,r,loops,for-loop,store,R,Loops,For Loop,Store,我试图在R中运行一个for循环,它将结果存储在一个列表中。我无法将数据存储在矩阵中,因为我的输出长度不同。例如,下面的代码生成一个列表,其中除最后一节外,所有条目都为“NULL” for(i in 1:n) { time <- list() time[[i]] <- (sample(1:96, wb[i], replace=T, prob=weekday[,1])) print(time) } 任何帮助都将不胜感激 为了增加乐趣(和效率),您可以尝试 time <-

我试图在R中运行一个for循环,它将结果存储在一个列表中。我无法将数据存储在矩阵中,因为我的输出长度不同。例如,下面的代码生成一个列表,其中除最后一节外,所有条目都为“NULL”

for(i in 1:n) {
  time <- list()
  time[[i]] <- (sample(1:96, wb[i], replace=T, prob=weekday[,1]))
print(time)
}
任何帮助都将不胜感激

为了增加乐趣(和效率),您可以尝试

time <- lapply(1:n, function(i) sample(1:96, wb[i], replace=T, prob=weekday[,1]))

每次通过循环重新初始化
时间
时:
时间遍历循环。当我1岁时,你在时间中存储一个空列表,然后在第一个元素中放入一些内容。当我2岁的时候,你在时间里储存一张空的清单(注意这一部分),然后在第二个位置放一些东西。第一个位置是什么?我只是在你发布回复时想到的。非常感谢。谢谢,这要有效得多:)@shana246在假设apply函数更有效时要小心。就类型化代码的数量而言,它们的效率更高,但它们不一定比编写良好的循环更有效,因为所有应用函数都是循环的包装器。我说,它们不一定更高效,因为它们确实进行了一些简单的数据转换,使得循环中发生的任何事情都更高效,如果执行显式循环,可能会被忽略。例如,apply将数据帧转换为矩阵,这样迭代速度更快。@shana246尽管如此,apply函数是循环使用简单函数的首选方法。我唯一的观点是,似乎存在一些误解,即当函数只是循环的包装器时,应用函数比显式循环更快。
time <- lapply(1:n, function(i) sample(1:96, wb[i], replace=T, prob=weekday[,1]))