Как передать несколько типов данных в llply? - PullRequest
1 голос
/ 24 сентября 2010

У меня есть функция, которая требует как объект S4, так и фрейм данных в качестве аргументов.

Но функции типа lapply и llply допускают только один список и одну функцию.пример: new_list=llply(list, function)

Я мог бы создать один список с чередованием объекта S4 и данных, но llply будет выдвигать один элемент списка за раз, что означает, что это будет либо объект S4, либо данные (функция не может работать только с одним или другим).

В некотором смысле то, что я ищу, сродни 2D-списку (где каждая строка имеет объект S4 obj и данные, а строка проталкивается за раз).

Так как быЯ делаю эту работу?

Вот более общая версия моей проблемы.Если у меня есть такая функция:

foobar <- function(dat, threshold=0.5, max=.99)
{
...
}

, и я хотел протолкнуть список через эту функцию, я мог бы сделать:

new_list=llply(list, foobar)

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

Ответы [ 2 ]

1 голос
/ 24 сентября 2010

Функции, подобные lapply, обычно имеют параметр ... аргументов, которые передаются в функцию. Например:

lapply(list, foobar, somearg='nondefaultvalue')

Если у вас есть несколько изменяющихся параметров (например, различное значение somearg для каждого элемента в list), то вы должны либо упаковать их в виде пар в списке, либо обратиться к функции, подобной mapply:

mapply(foobar, list, somearg=c('vectorof', 'nondefault', 'values')
0 голосов
/ 24 сентября 2010

Может быть, вы можете попробовать это:

Сделать каждый элемент списка самим списком, который содержит объект S4 и фрейм данных.

Просто предложение, я не совсем уверенесли это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...