Тест Крускала-Уоллиса между подсписками списка в R

Я новичок в R. Я пытаюсь запустить тест Крускала-Уоллиса между подсписками с фреймами данных (содержащими числовые данные) в одном списке, но я продолжаю получать ошибки.

Каждый подсписок имеет один столбец, но неравное количество строк (следовательно, насколько я знаю, они не могут храниться в одном фрейме данных)

данные:

data_list <- list(tumor = 0.004255040 0.002703172 0.007478089 0.003554968 0.003803952 0.005225325 0.004816366 0.005674340 0.003474605 0.004784456, 
t = 0.004326186 0.008126497 0.009110830 0.004030094 0.005784066 0.006752136 0.009840556, 
b = 0.004872971 0.009066809 0.005964638 0.003622466 0.011660714, 
caf = 0.003618611 0.007463386 0.007463134 0.005453387 0.010409640 0.012020965))

Так это выглядит так:

$tumor
1                                               0.004255040
2                                               0.002703172
3                                               0.007478089
4                                               0.003554968
5                                               0.003803952
6                                               0.005225325
7                                               0.004816366
8                                               0.005674340
9                                               0.003474605
10                                              0.004784456

$t
1                                         0.004326186
2                                         0.008126497
3                                         0.009110830
4                                         0.004030094
5                                         0.005784066
6                                         0.006752136
7                                         0.009840556

$b
1                                         0.004872971
2                                         0.009066809
3                                         0.005964638
4                                         0.003622466
5                                         0.011660714

$caf
1                                           0.003618611
2                                           0.007463386
3                                           0.007463134
4                                           0.005453387
5                                           0.010409640
6                                           0.012020965

Я пробовал много вещей, все возвращалось с ошибками и безуспешно:

> kruskal.test(data_list)
    Error in `[.data.frame`(u, complete.cases(u)) : 
     undefined columns selected
> kruskal.test(list(data_list$tumor,data_list$t,data_list$b,data_list$caf))
    Error in `[.data.frame`(u, complete.cases(u)) : 
     undefined columns selected
> kruskal.test(list(data_list$tumor[,1],data_list$t,data_list$b[,1],data_list$caf[,1]))
    Error in `[.data.frame`(u, complete.cases(u)) : 
     undefined columns selected
> kruskal.test(unlist(data_list))
    Error in kruskal.test.default(unlist(data_list)) : 
     argument "g" is missing, with no default

Благодарю вас! :)


person Keity    schedule 07.01.2018    source источник
comment
У вас может быть фрейм данных с двумя столбцами. Один столбец type, который получает значения tumour, t и т. д., и другой столбец value, содержащий ваши значения. Итак, формат списков, который у вас здесь, не единственный вариант. И тогда вы можете сделать kruskal.test(value ~ type, data = mydata).   -  person AntoniosK    schedule 07.01.2018
comment
Кроме того, опубликованный вами набор данных не может быть создан с использованием вашего кода.   -  person AntoniosK    schedule 07.01.2018
comment
Откуда абс?   -  person    schedule 07.01.2018
comment
ab — это моя ошибка, я просто скопировал команды и ошибки «как есть» и не менял ab (данные, с которыми работал) на имя, которое дал здесь.   -  person Keity    schedule 08.01.2018
comment
Антониоск, спасибо! не подумал использовать фактор, чтобы сделать этот тест, спасибо! :)   -  person Keity    schedule 08.01.2018


Ответы (2)


Вы можете передать список векторов в качестве первого аргумента для kruskal.test.

data_list <- structure(list(tumor = c(0.00425504, 0.002703172, 0.007478089, 
  0.003554968, 0.003803952, 0.005225325, 0.004816366, 0.00567434, 
  0.003474605, 0.004784456), t = c(0.004326186, 0.008126497, 0.00911083, 
  0.004030094, 0.005784066, 0.006752136, 0.009840556), b = c(0.004872971, 
  0.009066809, 0.005964638, 0.003622466, 0.011660714), caf = c(0.003618611, 
  0.007463386, 0.007463134, 0.005453387, 0.01040964, 0.012020965)),
  .Names = c("tumor", "t", "b", "caf"))

kruskal.test(data_list)

# Kruskal-Wallis rank sum test

# data:  data_list
# Kruskal-Wallis chi-squared = 7.0828, df = 3, p-value = 0.0693
person Community    schedule 07.01.2018
comment
спасибо, хотя я бы не хотел воссоздавать свой огромный файл данных. - person Keity; 08.01.2018

person    schedule
comment
Большой! Благодарю вас! - person Keity; 08.01.2018