所以我坚持看似基本的东西,但无论如何。我有下面的数据帧(Dat.f),我需要在Posgain.vector和Neggain.vector上运行一个proportionions.test(Chi.squared)并提取P值 使用公式prop.test。
如果使用第一行作为示例手动完成,则结果为
P<-prop.test(x=c(4,4), n=c(16,10)[2]
Posgain.vector Freq Neggain.vector Freq.1 PosRef NegRef
1 A1BG 4 A1BG 4 16 10
2 A1BG-AS1 4 A1BG-AS1 4 16 10
3 A1CF 4 A1CF 1 16 10
4 A2M 1 A2M 1 16 10
5 A2M-AS1 1 A2M-AS1 1 16 10
6 A2ML1 1 A2ML1 1 16 10
问题是我无法弄清楚如何将此函数应用于每一行,因此它将该行的第二列和第四列粘贴到x中并应用n保持相同的公式。
非常感谢任何帮助。
答案 0 :(得分:2)
非常类似@agstudy的方法,但提取p.value:
df = data.frame(Posgain.vector=c("A1BG", "A1BG-AS1", "A1CF", "A2M", "A2M-AS1", "A2ML1"),
Freq = c(4, 4, 4, 1, 1, 1),
Neggain.vector=c("A1BG", "A1BG-AS1", "A1CF", "A2M", "A2M-AS1", "A2ML1"),
Freq.1 = c(4, 4, 1, 1, 1, 1),
PosRef = rep(16, 6),
NegRef = rep(10, 6))
apply(df[, c(2,4)], 1, function(row) prop.test(x=c(row[1], row[2]), n=c(16, 10))$p.value)
# [1] 0.7117401 0.7117401 0.6652053 1.0000000 1.0000000 1.0000000