我正在尝试将两个算法f(n)
和g(n)
与wilcox.test()
进行比较,以表明f
优于g
。
数据框如下:
Algorithm 0 20 40 60 ...
f 100 90 80 70 ...
g 110 92 81 71 ...
f 130 100 90 85 ...
g 135 99 95 90 ...
f ...
g ...
f ...
g ...
...
我手动获得每列(大约40列)的p值,并将它们存储到csv中并绘制它。
> wilcox.test(..., alternative="less", paired=FALSE) for column 0
> wilcox.test(..., alternative="less", paired=FALSE) for column 20
> wilcox.test(..., alternative="less", paired=FALSE) for column 40
> # feels like forever
问题是,我发现我在实现算法时遇到了错误,所以我需要重新运行程序并再次执行。
如何获取每列的p值并绘制它?这可能是一个新手问题,我知道这可能看起来像一个没有充分调查的问题,但我需要认真帮助。所以请帮助我。
答案 0 :(得分:0)
你需要一个for循环:
results <- numeric(0) # an empty vector
for (i in 1:ncol(mydata))) {
results[i] <- wilcox.test(mydata[,i] ~ mydata$algorithm)$p.value
}
未测试。
答案 1 :(得分:0)
假设您的数据位于dat data.frame:
Algorithm =rep(c("f","g"),leng=nrow(dat))
Names=unique(Algorithm )
pvals=apply(dat,2,function(co){
sdf=lapply(Names,function(x) co[Names == x])
wilcox.test(sdf[[1]],sdf[[2]], alternative="less", paired=FALSE)$p.value
})
barplot(pvals,names.arg = colnames(dat),col=rainbow(ncol(dat)))