Использование цикла 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)
}