Как использовать lapply с формулой? - PullRequest
8 голосов
/ 10 августа 2011

У меня проблема с функцией lapply, и я не нашел ни одного соответствующего вопроса, опубликованного ранее.Мне нужно применить тест перестановки ко всем элементам списка, однако я не могу правильно настроить лапы.

Я пытаюсь это

testperm <- lapply(test-list, FUN=perm.test, formula=(cover ~ group))

, функция perm.test изОбложка пакета «sureRankTests» является зависимой (числовой) переменной, а группа - фактором.

Любые советы о том, как применять такую ​​функцию, будут очень благодарны.Jens

Ответы [ 2 ]

9 голосов
/ 10 августа 2011

Когда вы используете формулу, вам часто нужно также указать значение аргумента data, чтобы функция знала, какие данные использовать.Ваши наборы данных будут элементами списка, поэтому вам нужно использовать анонимную функцию для передачи их в perm.test.

В этом случае попробуйте:

testperm <- lapply(test.list, FUN=function(x) perm.test(formula=(cover ~ group),data=x)) 
2 голосов
/ 10 августа 2011

Это ваш третий аргумент, на который вам нужно взглянуть.

lapply принимает (как минимум) два аргумента, список (включая фрейм данных) и функцию , FUN, что действует на него:

data(iris)
df0 = iris[1:5,1:3]

fnx = function(v){v^2}

lapply(df0, fnx)

lapply принимает необязательный третий аргумент, который должен соответствовать дополнительным аргументам, требуемым FUN, а не , предоставляемым структурой данных первого аргумента lapply:

lapply( df0[,1], quantile, probs=1:3/4)
...