是否有R函数可以返回str(list)找不到的列表中的参数

时间:2019-06-12 14:25:55

标签: r

我试图返回列表中的参数,但是我无法使用str(list)找到该参数。

这是我的密码

install.packages("meta")
library(meta)
m1 <- metacor(c(0.85, 0.7, 0.95), c(20, 40, 10))
m1
     COR           95%-CI %W(fixed) %W(random)
1 0.8500 [0.6532; 0.9392]      27.9       34.5
2 0.7000 [0.4968; 0.8304]      60.7       41.7
3 0.9500 [0.7972; 0.9884]      11.5       23.7


Number of studies combined: k = 3


                       COR           95%-CI    z  p-value
Fixed effect model   0.7955 [0.6834; 0.8710] 8.48 < 0.0001
Random effects model 0.8427 [0.6264; 0.9385] 4.87 < 0.0001

如何将COR的{​​{1}}(= 0.8427)或p-value(= <0.0001)保存为单个参数。

2 个答案:

答案 0 :(得分:1)

您正在寻找的数字(cor 0.8427)似乎是在print.meta中创建的。虽然该函数似乎太大,所以我放弃了尝试精确指出它的计算位置和名称。我不认为它甚至保存在函数中,而是打印出来的。

无论如何,我采取了另一种捕获输出的方式:

#capture the output of the summary - the fifth line gives us what we want
out <- capture.output(summary(m1))[5]
#capture all the number and return the first
unlist(regmatches(out, gregexpr("[[:digit:]]+\\.*[[:digit:]]*", out)))[1]
#[1] "0.8427"

答案 1 :(得分:0)

我认为您的问题是访问该对象。 $将为您提供帮助,例如,先输入变量名,再输入美元,然后按Tab键,将显示该对象的不同可能性。根据您的问题,值将为

> m1$cor[1]
[1] 0.85
> mysummary<-summary(m1)
> mysummary$fixed$p
[1] 2.163813e-17
> mysummary$fixed$z
[1] 8.484643
> ifelse(mysummary$fixed$p<0.0001, "<0.0001", "WHATEVER")
[1] "<0.0001"

要选择特定的一个,可以使用[i],其中i是整数(例如,对于0.85,i = 1) 要获得0.0001,我建议对pvalue或Z使用ifelse()语句及其相应规则。干杯!