我的数据框如下:
ID<-c(rep("A", times=5), rep("B", times=5), rep("C", times=5) )
A<-runif(15, 29, 31)
B<-runif(15, 1, 11)
C<-c(runif(5, 0.1, 0.2),NA,NA, runif(3, 10, 11), runif(4, 0.5, 0.52), NA)
D<-runif(15, 2, 7)
df1a<-data.frame(ID,A,B, C, D)
我使用apply
来计算aov
ss<-apply(df1a[,2:ncol(df1a)], 2, function(x)(summary(aov(x~df1a[,"ID"]))))
我想使用apply提取列表名称$C
和Pr(>F)
。我的代码在下面,但它不起作用
ssp<-apply(df1a[,2:ncol(df1a)], 2, function(x)(summary(aov(x~df1a[,"ID"]))[[1]][["Pr(>F)"]]))))
答案 0 :(得分:1)
我们可以使用lapply
lapply(df1a[-1], function(x) summary(aov(x ~ df1a[["ID"]])))[['C']][[1]]$`Pr(>F)`
#[1] 1.404514e-13 NA
或使用OP代码apply
apply(df1a[,2:ncol(df1a)], 2, function(x)
(summary(aov(x~df1a[,"ID"]))))[["C"]][[1]][, "Pr(>F)"]
#[1] 1.404514e-13 NA
如果我们需要所有的p值
sapply(df1a[-1], function(x) summary(aov(x ~ df1a[["ID"]]))[[1]][1,'Pr(>F)'])
或者作为两栏&#39; data.frame&#39;
stack(lapply(df1a[-1], function(x) summary(aov(x ~ df1a[["ID"]]))[[1]][1,'Pr(>F)']))[2:1]