Далее следует упрощенная версия моей проблемы, которая намного проще объяснить, чем моя оригинальная. Предположим, у меня есть вектор параметровSapply on User Defined Function
par<-c(0.2,0.5,0.7,0.3,0.9,1,1.2,1.8,1.5)
и список под названием total
определяется как
total
[[1]]
[1] 0.2 0.6 0.8 0.3 0.9
[[2]]
[1] 0.2 0.6 0.8 0.3 0.9 0.2 0.8 0.3 0.9 0.2 0.6 0.3 0.9
[[3]]
[1] 0.2 0.6 0.8 0.3 0.9 0.2 0.8 0.3 0.9 0.2 0.6 0.3 0.9
Теперь, позволяет сказать, что я хотел бы применить функцию mean
каждому из 3-х элементов списка и каждый раз умножать результат на функцию из двух параметров, выбранных из par
. Однако параметры, которые нужно выбрать, изменяются с каждой итерацией sapply
. Например, когда я вычисляю среднее значение для первого элемента списка, я хочу умножить время результата sqrt(par[2]*par[3])
, тогда как при вычислении среднего значения второго элемента в list
я хочу умножить время результата sqrt(par[5]*par[6])
и т. Д.
Я знаю, что могу использовать sapply
, чтобы получить среднее значение каждого элемента в total
делая
sapply(total, mean)
но как я могу сказать sapply
сделать rolling
умножение результата? Должен ли я использовать rapply
?
Вы не нужно это неудобно lapply/unlist call. Просто 'sapply (total, mean)'. И это не совсем «катящееся» приложение. Вероятно, вы должны преобразовать свой объект 'par' в список и использовать' mapply'. –
Хорошо, позвольте мне исправить это! –
Каково правило прохождения вашего векторного вектора? – agstudy