Использование цикла for для статистики по столбцу фрейма данных в R.

Я пытался создать цикл, который берет вектор имен столбцов, которые я хочу использовать, а затем делает цикл для статистических тестов в столбце, который определяет группу выборки. Вот как это выглядит сейчас.

sink('df_statistics.txt')

df <- `df.tsv`

columns <- c("column1" , "column2" , "column3" , "column4")

for (x in columns) {
    wilcox.test(formula = x ~ Group, data = df)
}

sink()

Когда я запускаю его, я получаю эту ошибку:

Error in model.frame.default(formula = data ~ Group, data = df) : 
  variable lengths differ (found for 'Group')

Мои группы определяются числами 1 и 2, я также пытался назвать их контрольными и экспериментальными, но я получаю ту же ошибку, что и выше. Какие-либо предложения?

Благодарю вас

2 ответа

Мы можем использовать lapply

lapply(df[columns], function(x) wilcox.test(x~df$Group))

данные

columns <- c("column1" , "column2")
set.seed(24)
df <- data.frame(Group = rep(1:2, each=5), column1 = rnorm(10), column2 = rnorm(10))

Вы не можете программно получить доступ к столбцам с оригинальной нотацией. Используйте нотацию [[ ]] для выбора нужного столбца с переменной.
Пытаться:

columns <- c("column1" , "column2" , "column3" , "column4")

for (x in columns) {
    wilcox.test(formula = df[[x]] ~ df$Group)
}
Другие вопросы по тегам