Я пытался отладить это в течение последних 2 дней, применяя все возможные исправления, найденные здесь в Stack Overflow, но я все еще получаю различные ошибки, я знаю, что я могу сделать больше.R: разные ошибки при использовании apply()
dat - это кадр данных с 3051 строками и 38 столбцами, взятый из набора данных golub в многопроцессорной библиотеке. образец ДАТ:
> dat[1:5, 1:5]
V1 V2 V3 V4 V5
g1 -1.45769 -1.39420 -1.42779 -1.40715 -1.42668
g2 -0.75161 -1.26278 -0.09052 -0.99596 -1.24245
g3 0.45695 -0.09654 0.90325 -0.07194 0.03232
g4 3.13533 0.21415 2.08754 2.23467 0.93811
g5 2.76569 -1.27045 1.60433 1.53182 1.63728
У меня есть эта функция, определенная:
> wilcox.func <- function(x, s1, s2) {
+ x1 <- x[s1]
+ x2 <- x[s2]
+ x1 <- as.numeric(x1)
+ x2 <- as.numeric(x2)
+ w.out <- wilcox.test(x1, x2, exact=F, alternative="two.sided", correct=T)
+ out <- as.numeric(w.out$statistic)
+ return(out) }
и я стараюсь, чтобы применить его:
> apply(dat, 1, wilcox.func, s1=c(1:27), s2=c(28:38))
, где я хочу, чтобы запустить wilcox.test () функция с первыми 27 столбцами как x, а остальные столбцы - y (на основе golub.cl). Тем не менее, я получаю эту ошибку:
Error in wilcox.test(x1, x2, exact = F, alternative = "two.sided", correct = T) : unused arguments (exact = F, alternative = "two.sided", correct = T)
Удаление точно = F, альтернативный = "two.sided", правильно = T дает мне новую ошибку ошибка в х [s1]: 0 могут быть смешаны только с отрицательными индексами.
достаточно Funnily в каком-то момент я получил ошибку ошибки х [s1,]: неправильное число измерений выполняющих ту же строку коды (с «неиспользованными аргументами» не удалена из wilcox.test) , но это было 2 дня назад, и я не смог воспроизвести его снова.
Я также пробовал lapply() и mapply(), но я получаю ту же ошибку неиспользуемых аргументов.
То, что я пытаюсь достичь: wilcox.test(), если я правильно понимаю проблему, следует применять к каждой строке, где вектор x состоит из столбцов с 1 по 28, а столбцы векторов y 29 - 38.
Прошу прощения, если это глупая простая проблема, которую мне не хватает. Я просто не знаю, что это такое :(
Редактировать: теперь это работает (как и код Parfait) после перезапуска R ... извините, это должно было быть чем-то, что я пробовал первым, прежде чем публиковать это. .
Пожалуйста 'dput() 'ваши данные. Наведите указатель на тег' r' для получения дополнительной информации. –
@ Hack-R Извините, это мои ели t время публикации о R. Как мне «dput» мои данные? Вы имеете в виду, что я должен был бы 'library (multtest)' 'dput (data (golub))' в моем посте? – Melissa
Я не уверен, что получаю то, что вы пытаетесь сделать. Вы имеете в виду отдельный тест для каждой комбинации столбцов, т. Е. 28x9 = 252 тестов? – Joe