我正在尝试对每一行进行方差分析,然后提取p值进行绘图。作为参考,我正在尝试修改本文的代码:R, extracting p-value for each row from t.test
这是我的摘录:
> anova.007.mRNA<-x007 %>%
+ rowwise() %>%
+ mutate(pval = anova(c(C1,C2,C3,C4,C5,C6),
+ c(H1,H2,H3,H4,H5,H6))$p.value) %>%
+ ungroup()
...但是我收到错误消息?
Error in mutate_impl(.data, dots) :
Evaluation error: no applicable method for 'anova' applied to an object of class "c('double', 'numeric')".
这很奇怪,因为我认为方差测试会以类似方式应用?也许我需要先创建一个线性模型lm()?
答案 0 :(得分:0)
# example data
df = read.table(text = "
C1 C2 C3 C4 C5 C6 H1 H2 H3 H4 H5 H6
8.57345 8.45938 8.68941 8.35913 8.48177 8.44560 8.40986 8.59392 8.46562 8.07999 8.22759 8.41817
8.32595 8.19273 8.10708 8.48156 7.99014 8.24859 8.78216 8.59592 8.48299 8.52647 8.34797 8.38534
", header=T)
library(tidyverse)
df %>%
rowwise() %>%
mutate(pval = anova(lm(c(C1,C2,C3,C4,C5,C6,
H1,H2,H3,H4,H5,H6) ~ c(rep("C",6),rep("H",6))))$`Pr(>F)`[1]) %>%
ungroup()
# # A tibble: 2 x 13
# C1 C2 C3 C4 C5 C6 H1 H2 H3 H4 H5 H6 pval
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
# 1 8.57 8.46 8.69 8.36 8.48 8.45 8.41 8.59 8.47 8.08 8.23 8.42 0.155
# 2 8.33 8.19 8.11 8.48 7.99 8.25 8.78 8.60 8.48 8.53 8.35 8.39 0.0109
anova
需要一个模型(lm
)对象而不是两个向量作为输入。您需要通过将所有C
和H
值组合在一起并创建(作为手动变量)这两个组作为自变量来创建模型。
此外,此处提取p值的方法并不像t.test
中那样简单。