将比值比结果添加到现有数据框中

时间:2019-06-05 11:31:31

标签: r tidyverse

我之前曾问过这个问题: How to add the results of applying a function to an existing data frame?

我认为我可以将其用作模板,并将unsestratio测试的结果unstest()到数据框。

这里有一些数字

thing<-matrix(c(33,2153,48,2528,1577,30335,66,1916,24,1162,15,910),nrow=6,byrow=T)
colnames(thing)<-c("SM","AE")
rownames(thing)<-c("a","b","c","d","e","f")
oddsratio(thing)

我希望能做到这一点:

oddsthing<-as.data.frame(thing)
oddsthing<-oddsthing%>%mutate(res=list(oddsratio(thing)))%>%unnest()

但是它不会产生我想要的输出。

我写的时候

thing_list<-oddsratio(thing)

我可以在列表中看到四个元素:数据,度量,p.value,校正

如何从列表中的SM AE列右边的列中获取度量和p值?

如何访问列表中的内容? 我可以 unnest($ res),但这也不起作用。

我有种感觉,我快要到了。...

恶作剧!

1 个答案:

答案 0 :(得分:2)

通常,您可以使用View(thing_list)来查看列表的“结构”,也可以在此处使用names(thing_list)来显示"data" "measure" "p.value" "correction"。知道了之后,您可以cbind.data.frame像这样向数据框中添加所需的列:

thing <- cbind.data.frame(thing, thing_list$measure, thing_list$p.value)
thing
    SM    AE  estimate     lower     upper  midp.exact              fisher.exact            chi.square
a   33  2153 1.0000000        NA        NA          NA                        NA                    NA
b   48  2528 0.8084932 0.5123434 1.2605062 0.350119674 0.36987910540283064353417 0.3468330287919010879
c 1577 30335 0.2962728 0.2051051 0.4121023 0.000000000 0.00000000000000007500751 0.0000000000002497838
d   66  1916 0.4461373 0.2888623 0.6758792 0.000115398 0.00014013356896922285933 0.0001160955897881125
e   24  1162 0.7408147 0.4366285 1.2754370 0.274390974 0.26665380954122580581256 0.2689008535316412263
f   15   910 0.9244444 0.5073984 1.7659563 0.804430890 0.87366076007998338948113 0.8167701545656785855