Sergey Bombin Sergey Bombin - 2 months ago 14
R Question

How to loop chi sq test in R

I have the table with alternative and reference allele counts. How could I loop chi sq test in R to run it for each row? I attached the picture of my table. I need to perform chi sq test with altCount and refCount columns.

altCount refCount
8 6
3 7
4 9


I need the p-value for each row. I am very new to R. I figured out how to perform chi sq test on individual rows but since I have several thousands rows I need to make a loop to run it all at once.
I did:

bcz <- read.delim("C:/cygwin64/home/sbomb/tables/bc_z_alleles.csv")
a = bcz[1,6]
b = bcz[1,7]
c = c(a,b)
d = c(0.5,0.5)
chisq.test(
x = c,
p = d,
)


but I do not know how to loop it for whole table. Could you please explain me how to do it with all details?

enter image description here

Answer

The easiest loop for a beginner still is the for loop:

d <- data.frame(a = c(8,3,4), b = c(6,7,9))
for(row in 1:nrow(d)){
    print(row)
    print(chisq.test(c(d[row,1],d[row,2])))
}

The same can be done with

apply(d, 1, chisq.test)

The latter is shorter and gives you a list as your result, which is probalby better for further evaluation.