Есть ли функция R для возврата параметра в списке, который невозможно найти по str (list) - PullRequest
2 голосов
/ 12 июня 2019

Я пытаюсь вернуть параметр в списке, но не могу найти параметр, используя 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 (= 0,8427) или p-value (= <0,0001) для <code>Random effects model в качестве одного параметра.

Ответы [ 2 ]

1 голос
/ 12 июня 2019

Кажется, что числа, которые вы ищете (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"
0 голосов
/ 12 июня 2019

Я полагаю, ваша проблема с доступом к объекту. $ поможет вам в этом, так что, поставив имя переменной, затем доллар и нажав на вкладку, появятся различные возможности этого объекта. По вашим вопросам, значения будут

> 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 - целое число (например, i = 1 для 0,85) Чтобы получить 0,0001, я предлагаю использовать оператор ifelse() для значений p или Z с соответствующим правилом. Ура!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...