我试图返回列表中的参数,但是我无法使用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)保存为单个参数。
答案 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()
语句及其相应规则。干杯!