0

我希望运行一个循环,从数据框中选择 2 行 1000 次 > 将其存储到对象中 > 然后运行相同的循环,选择 3 行 1000 次 > 存储到对象 > 然后 4,依此类推。最终目标是在循环中随机选择不同数量的行时比较列的均值/方差。

代码

iris<- iris

results2<- list()


counter<- 0
for (i in 1:1000) {
  # sample 2 randomly selected rows 1000 times
  tempsample2<- iris[sample(1:nrow(iris), 2, replace=F), ]
  
  # store results of sampling into the created list
  results2[[i]]= tempsample2

  
  counter<- counter+1
  print(counter)
}

我可以手动将所有这些循环存储到单独的对象中,然后进行比较,但我猜有一种更简单的方法可以做到这一点。谁能帮我这个?谢谢你的时间。

4

1 回答 1

1

您可以使用lapply并将输出保存为嵌套列表。

select_rows <- 2:4
n_times <- 5
inds <- nrow(iris)

result <- lapply(select_rows, function(x) 
                replicate(n_times, iris[sample(inds, x), ], simplify = FALSE))

更改select_rowsn_times根据您的选择。

于 2022-02-10T01:49:23.657 回答