Как вы используете sapply () с «списком», который включает в себя два столбца данных? - PullRequest
0 голосов
/ 23 марта 2011

В настоящее время я использую sapply для вызова функции взвешенного среднего, которая принимает два входа, дату и фрейм даты с несколькими значениями на дату,

sapply(unique(sort(d$Date, decreasing=TRUE)), WeightedMean, data=d))

WeightedMean <- function(date, data) {...}

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

sapply(unique(d[order(d$Date, d$Id, decreasing=TRUE), c("Date", "Id")]), 
    WeightedMean, data=d)

WeightedMean <- function(date, id, data) {...}

Обратите внимание, что функция WeightedMean отфильтрует данные по дате и идентификатору, а затем вычислит итоговую сумму.значение.Можно ли как-то обновить приведенный выше код, чтобы передать два параметра в функцию?

Ответы [ 2 ]

3 голосов
/ 23 марта 2011

Вы можете использовать mapply вместо sapply.(m означает «множественные аргументы».)

ordered_data <- unique(d[order(d$Date, d$Id, decreasing = TRUE), c("Date", "Id")])
with(ordered_data, mapply(WeightedMean, Date, Id))
1 голос
/ 23 марта 2011

С помощью анонимной функции.

Вы не предоставили рабочий пример, поэтому следующий код не протестирован, но должен работать:

sapply(unique(d[order(d$Date, d$Id, decreasing=TRUE), c("Date", "Id")]), 
    function(x){WeightedMean(x$Date, x$Id, data=x)})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...