使用括号中的数字和名称提取嵌套列表元素

时间:2016-06-22 04:58:53

标签: r

运行重复测量ANOVA并命名输出

RM_test <- ezANOVA(data=test_data, dv=var_test, wid = .(subject),
within = .(water_year), type = 3)

我使用str(RM_test)查看了命名对象的内部结构,并收到以下内容:

List of 3
$ ANOVA                        :List of 3
..$ ANOVA                        :'data.frame': 1 obs. of  7 variables:
.. ..$ Effect: chr "water_year"
.. ..$ DFn   : num 2
.. ..$ DFd   : num 22
.. ..$ F     : num 26.8
.. ..$ p     : num 1.26e-06
.. ..$ p<.05 : chr "*"
.. ..$ ges   : num 0.531
..$ Mauchly's Test for Sphericity:'data.frame': 1 obs. of  4 variables:
.. ..$ Effect: chr "water_year"
.. ..$ W     : num 0.875
.. ..$ p     : num 0.512
.. ..$ p<.05 : chr ""
..$ Sphericity Corrections       :'data.frame': 1 obs. of  7 variables:
.. ..$ Effect   : chr "water_year"
.. ..$ GGe      : num 0.889
.. ..$ p[GG]    : num 4.26e-06
.. ..$ p[GG]<.05: chr "*"
.. ..$ HFe      : num 1.05
.. ..$ p[HF]    : num 1.26e-06
.. ..$ p[HF]<.05: chr "*"
$ Mauchly's Test for Sphericity:'data.frame':   1 obs. of  4 variables:
..$ Effect: chr "wtr_yr"
..$ W     : num 0.875
..$ p     : num 0.512
..$ p<.05 : chr ""
$ Sphericity Corrections       :'data.frame':   1 obs. of  7 variables:
..$ Effect   : chr "wtr_yr"
..$ GGe      : num 0.889
..$ p[GG]    : num 4.26e-06
..$ p[GG]<.05: chr "*"
..$ HFe      : num 1.05
..$ p[HF]    : num 1.26e-06
..$ p[HF]<.05: chr "*"

我能够使用F从第一个数据框中提取第四个变量RM_test[[1]][[4]][1],但无法弄清楚如何从数据框{{1}中提取第三个变量p[GG] }。此数据框出现两次,因此提取任何一个都可以。

有关如何使用括号中的数字和名称进行此操作的建议将不胜感激。

1 个答案:

答案 0 :(得分:2)

问题似乎是你不知道如何提取列表元素。正如您所说,有两个Sphericity Corrections数据框,因此我将如何获取两者的p[GG]值。

使用括号中的数字

对于第一个,我们RM_test[[1]][[3]][[3]]。您可以一步一步地理解它:

x1 <- RM_test[[1]]; str(x1)
x2 <- x1[[3]]; str(x2)
x3 <- x2[[3]]; str(x3)

对于第二个,请RM_test[[3]][[3]]

使用括号中的名称

我们可以使用名称,而不是使用数字进行索引。首先,做

RM_test[["ANOVA"]][["Sphericity Corrections"]][["p[GG]"]]

对于第二个,请执行

RM_test[["Sphericity Corrections"]][["p[GG]"]]

使用$

对于第一个,请执行

RM_test$ANOVA$"Sphericity Corrections"$"p[GG]"

对于第二个,请执行

RM_test$"Sphericity Corrections"$"p[GG]"

请注意在必要时使用引用""