【发布时间】:2021-05-27 08:31:13
【问题描述】:
我创建了一个循环来引导重复测量,每个采样日选择一个随机测量。循环应该运行 100 次。
这是我的输入数据框的样子:
date spot treatment site N2O.units N2O.pv N2O.flux t.air
<chr> <int> <chr> <chr> <chr> <chr> <dbl> <dbl>
1 2019-06-21 31 min 5, bare LV mg ** 0.0002 16.5
2 2019-06-21 46 min 5, bare LV mg * 0 11.1
3 2019-07-05 31 min 5, bare LV mg ** 0.0001 17.2
4 2019-07-05 36 min 5, bare LV mg ** 0.0004 18.4
5 2019-07-05 46 min 5, bare LV mg ** 0.0001 17.2
6 2019-07-19 26 min 5, bare LV mg *** 0 29.4
7 2019-07-19 31 min 5, bare LV mg *** 0.0002 29.4
8 2019-07-19 36 min 5, bare LV mg ** 0.0002 19.9
9 2019-08-02 26 min 5, bare LV mg ** 0 26.9
10 2019-08-02 36 min 5, bare LV mg ** 0.0001 33.9
# ... with 44 more rows
首先我创建了一个列表
lst <- list()
然后我运行循环(示例中只有五次迭代)
for(i in 1:5)
{
LV %>%
group_by(date) %>%
sample_n(1) -> result
print(result$N2O.flux)
lst[i]<-result$N2O.flux
}
产生这个输出,这实际上非常好,也是我想要的
[1] 2e-04 1e-04 2e-04 1e-04 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00
[14] 0e+00 0e+00 0e+00 0e+00 0e+00 1e-04 0e+00 0e+00 -1e-04 0e+00 0e+00 0e+00
[1] 0e+00 1e-04 0e+00 0e+00 1e-04 0e+00 0e+00 0e+00 0e+00 1e-04 0e+00 0e+00 0e+00
[14] -2e-04 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00 1e-04 0e+00 0e+00
[1] 0e+00 4e-04 2e-04 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00 1e-04 0e+00 0e+00 0e+00
[14] 0e+00 1e-04 0e+00 0e+00 0e+00 1e-04 0e+00 0e+00 0e+00 -1e-04 0e+00 0e+00
[1] 2e-04 1e-04 0e+00 1e-04 1e-04 1e-04 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00
[14] -2e-04 0e+00 0e+00 0e+00 0e+00 1e-04 0e+00 0e+00 -1e-04 0e+00 0e+00 0e+00
[1] 0e+00 1e-04 2e-04 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00
[14] 0e+00 1e-04 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00 0e+00 -1e-04 0e+00 0e+00
但是,我得到的只是最后一个值
str(lst)
List of 5
$ : num 0
$ : num 0
$ : num 2e-04
$ : num 0
$ : num 2e-04
使用write.table(as.data.frame(lst),file="mylist2.csv", quote=F,sep=",",row.names=F) 编写 .csv 时看起来像那样(非常糟糕)
| X0 | X0.1 | X2e.04 | X0.2 | X2e04.1 |
|---|---|---|---|---|
| 0 | 0 | 2.00e-04 | 0 | 2.00e-04 |
所以,我的问题是:
- 如何将每次运行的所有循环结果保存在列表中?
- 如何为各种循环运行分配编号,以便将结果打印在整齐的列中,并将数值作为 .csv 中的标识符以供进一步处理?在我的幻想中,输出看起来像:
| 1 | 2 | 3 | 4 | 5 | ...etc | 100 |
|---|---|---|---|---|---|---|
| 0 | 0 | 2.00e-04 | 0 | 2.00e-04 | ... | -1e-04 |
| 2.00e-04 | 0 | 2.00e-04 | 0 | 2.00e-04 | ... | -1e-04 |
| -1e-04 | 0 | 4 | 0 | 2.00e-04 | ... | -1e-04 |
| 0 | 2.00e-04 | 2.00e-04 | 0 | -1e-04 | ... | -1e-04 |
| -1e-04 | 0 | 2.00e-04 | 0 | 2.00e-04 | ... | -1e-04 |
等等(25行)
【问题讨论】:
-
您在寻找
append()命令吗?lst <- append(lst, list(result$N2O.flux))