我有一个嵌套列表mylist。在mylist的第一级,有4种植被类型。在第二个“水平”中,我对15个土壤水平(称为level1、level2等)进行了水分胁迫测量,直到level15为止。
这是我的数据集:
mylist <- structure(list(needleleaf_evergreen_temperate_tree = structure(list(
layer1 = 0.074844339399475, layer2 = 0.10364235153792, layer3 = 0.139199261740378,
layer4 = 0.16641474105245, layer5 = 0.169465314138987, layer6 = 0.144044051642624,
layer7 = 0.105600767636715, layer8 = 0.0652887370818433,
layer9 = 0.0264351101290891, layer10 = 0.00481604897579532,
layer11 = 0.000247537572307209, layer12 = 1.73860803440901e-06,
layer13 = 4.8438137437183e-10, layer14 = 6.6619638078275e-16,
layer15 = 2.88818224958405e-25), .Names = c("layer1", "layer2",
"layer3", "layer4", "layer5", "layer6", "layer7", "layer8", "layer9",
"layer10", "layer11", "layer12", "layer13", "layer14", "layer15"
)), needleleaf_evergreen_boreal_tree = structure(list(layer1 = 0.074844339399475,
layer2 = 0.10364235153792, layer3 = 0.139199261740378, layer4 = 0.16641474105245,
layer5 = 0.169465314138987, layer6 = 0.144044051642624, layer7 = 0.105600767636715,
layer8 = 0.0652887370818433, layer9 = 0.0264351101290891,
layer10 = 0.00481604897579532, layer11 = 0.000247537572307209,
layer12 = 1.73860803440901e-06, layer13 = 4.8438137437183e-10,
layer14 = 6.6619638078275e-16, layer15 = 2.88818224958405e-25), .Names = c("layer1",
"layer2", "layer3", "layer4", "layer5", "layer6", "layer7", "layer8",
"layer9", "layer10", "layer11", "layer12", "layer13", "layer14",
"layer15")), needleleaf_deciduous_boreal_tree = structure(list(
layer1 = 0.074844339399475, layer2 = 0.10364235153792, layer3 = 0.139199261740378,
layer4 = 0.16641474105245, layer5 = 0.169465314138987, layer6 = 0.144044051642624,
layer7 = 0.105600767636715, layer8 = 0.0652887370818433,
layer9 = 0.0264351101290891, layer10 = 0.00481604897579532,
layer11 = 0.000247537572307209, layer12 = 1.73860803440901e-06,
layer13 = 4.8438137437183e-10, layer14 = 6.6619638078275e-16,
layer15 = 2.88818224958405e-25), .Names = c("layer1", "layer2",
"layer3", "layer4", "layer5", "layer6", "layer7", "layer8", "layer9",
"layer10", "layer11", "layer12", "layer13", "layer14", "layer15"
)), c3_irrigated = structure(list(layer1 = 0.0754105781789665,
layer2 = 0.106401701696586, layer3 = 0.146857331360997, layer4 = 0.181972345543274,
layer5 = 0.191196461077081, layer6 = 0.158267532821584, layer7 = 0.094842247909502,
layer8 = 0.0370323148644247, layer9 = 0.00750914382571778,
layer10 = 0.000504776733855199, layer11 = 5.5627446227042e-06,
layer12 = 3.24337357358994e-09, layer13 = 1.50763789751944e-14,
layer14 = 2.43174707104567e-23, layer15 = 1.55216144591354e-37), .Names = c("layer1",
"layer2", "layer3", "layer4", "layer5", "layer6", "layer7", "layer8",
"layer9", "layer10", "layer11", "layer12", "layer13", "layer14",
"layer15"))), .Names = c("needleleaf_evergreen_temperate_tree",
"needleleaf_evergreen_boreal_tree", "needleleaf_deciduous_boreal_tree",
"c3_irrigated"))我需要做的是,对每一种植被类型,对15种土壤水平进行水分胁迫的总和(即,将清单中每一“水平”的所有“亚水平”之和)。
实现这一目标的最佳途径是什么?
发布于 2018-01-31 22:39:07
只需调用lapply,并且因为嵌套内容在列表中,所以运行unlist将子列表项转换为sum的数字向量。
newlist <- lapply(mylist, function(x) sum(unlist(x)))https://stackoverflow.com/questions/48551567
复制相似问题