Как зациклить тест хи-квадрат в R

У меня есть таблица с количеством альтернативных и эталонных аллелей. Как я могу зациклить тест chi sq в R, чтобы запустить его для каждой строки? Прикрепляю фото своего стола. Мне нужно выполнить тест chi sq со столбцами altCount и refCount.

   altCount refCount
     8        6
     3        7
     4        9 

Мне нужно значение p для каждой строки. Я очень новичок в R. Я понял, как выполнить тест chi sq для отдельных строк, но, поскольку у меня несколько тысяч строк, мне нужно создать цикл, чтобы запустить все сразу. Я сделал:

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, 
 )

но я не знаю, как зациклить его на всей таблице. Не могли бы вы объяснить мне, как это сделать со всеми подробностями?

введите здесь описание изображения


person Sergey Bombin    schedule 22.09.2016    source источник
comment
Размещение фотографий данных не очень полезно. Попробуйте включить воспроизводимый пример в сам вопрос, который дает образец ввода и четко показывает желаемый результат.   -  person MrFlick    schedule 22.09.2016
comment
как г-н. Флик объяснил, вам нужно показать данные. Говоря это, я думаю, что этот пример может дать вам повод попробовать, а затем опубликовать, если вы не можете решить самостоятельно. На этот раз с воспроизводимым примером. Удачи stackoverflow. ком/вопросы/25350618/.   -  person user5249203    schedule 22.09.2016


Ответы (1)


Самый простой цикл для новичка — это цикл for:

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])))
}

То же самое можно сделать с

apply(d, 1, chisq.test)

Последний короче и дает вам список в качестве результата, который, вероятно, лучше подходит для дальнейшей оценки.

person Bernhard    schedule 22.09.2016
comment
Спасибо за ваш совет, но что мне делать, если в моей таблице данных количество строк равно 44 850, поэтому я не могу просто перепечатать каждое значение как a = c(8,3,4)? - person Sergey Bombin; 22.09.2016
comment
Думаю, я нашел ответ. Если я наберу: d ‹- data.frame(a = test1[,1], b = test1[,2]), он работает правильно. - person Sergey Bombin; 23.09.2016