如何基于R中的列表元素随机构造矩阵

时间:2019-04-15 22:16:12

标签: r list matrix

我有两个大型数据框,其中包含特定生物的种群数据,不同治疗的不同世代之间存在差异。我打算构建矩阵,使我能够使用这两个数据框中的数据来计算人口增长率。我需要根据每一代x处理组合将一个数据帧中的数据与第二个数据帧中的数据随机组合。来自df1的数据将用作每个矩阵的对角线,并由〜12个重复项组成。来自df2的值将作为每个矩阵的第一行插入,由约40个重复项组成。如何有条件地将数据组合在一起,以便对于每代x处理,我都有唯一的矩阵组合?

有4种治疗选择和6代选择。 lx_diag值将被设置为每个矩阵的对角线。

到目前为止,我已经成功地将数据分为各个列表,每个列表按Generation x Treatment分组:

## The data frame for 
>SurvTot1
  Generation unique Treatment Temp  pH Rep Beak time nx        lx   lx_diag
1           0    0_1         1   18 8.2   1    1    0 19 1.0000000 1.0000000
2           0    0_1         1   18 8.2   1    1    2 19 1.0000000 1.0000000
3           0    0_1         1   18 8.2   1    1    4 19 1.0000000 1.0000000
4           0    0_1         1   18 8.2   1    1    6 19 1.0000000 1.0000000
5           0    0_1         1   18 8.2   1    1    8 19 1.0000000 1.0000000
6           0    0_1         1   18 8.2   1    1   10 19 1.0000000 1.0000000
7           0    0_1         1   18 8.2   1    1   12 17 0.8947368 0.8947368
8           0    0_1         1   18 8.2   1    1   14 17 0.8947368 1.0000000
9           0    0_1         1   18 8.2   1    2    0 25 1.0000000 1.0000000
10          0    0_1         1   18 8.2   1    2    2 25 1.0000000 1.0000000
11          0    0_1         1   18 8.2   1    2    4 25 1.0000000 1.0000000
12          0    0_1         1   18 8.2   1    2    6 22 0.8800000 0.8800000
13          0    0_1         1   18 8.2   1    2    8 21 0.8400000 0.9545455
14          0    0_1         1   18 8.2   1    2   10 21 0.8400000 1.0000000
15          0    0_1         1   18 8.2   1    2   12 20 0.8000000 0.9523810
16          0    0_1         1   18 8.2   1    2   14 10 0.4000000 0.5000000
17          0    0_1         1   18 8.2   1    3    0 25 1.0000000 1.0000000
18          0    0_1         1   18 8.2   1    3    2 25 1.0000000 1.0000000
19          0    0_1         1   18 8.2   1    3    4 25 1.0000000 1.0000000
20          0    0_1         1   18 8.2   1    3    6 24 0.9600000 0.9600000


Survival.list <- split(SurvTot1, f = list(SurvTot1$Generation, 
                                          SurvTot1$Treatment))

我可以进一步对数据进行子集并按每个Rep x Beak组合将其分组,但这只会进一步分离它,并且似乎更难以为每个Generation x {{1 }}组合。

对于矩阵的第一行,我为每种Treatment x Generation组合使用〜40个值之一:

Treatment

也是如此:

## Top row data
> EPRtot1
      Generation Treatment sex.spec.fecundity
   1:          0         1             14.000
   2:          0         1             18.250
   3:          0         1             23.030
   4:          0         1             17.325
   5:          0         1             16.500
  ---                                        
1217:         25         2             14.750
1218:         25         2              0.000
1219:         25         2             10.000
1220:         25         2              8.750
1221:         25         2              0.000

我希望能够为列表中的每个数据帧建立索引,以使第一个数据帧中的12 EPR.list <- split(EPRtot1, f = list(EPRtot1$Generation, EPRtot1$Treatment)) x Generation组合之一与40 {{1 }} x Treatment在第二个数据帧中的值。

非常感谢您的帮助。

0 个答案:

没有答案