【发布时间】:2014-10-06 18:36:09
【问题描述】:
以下是我的问题的简化版本,它比我原来的问题更容易解释。假设我有一个参数向量
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 中第二个元素的平均值时,我想将结果乘以@987654329 @等……
我知道我可以使用sapply 来获得total 中每个元素的平均值
sapply(total, mean)
但是我如何告诉sapply 对结果进行rolling 乘法?我应该使用rapply 吗?
【问题讨论】:
-
你不需要那个笨拙的 lapply/unlist 调用。只需
sapply(total, mean)。它并不是真正的“滚动”应用程序。您可能应该将您的par对象改造成一个列表并使用mapply。 -
好点,让我更正一下!
-
遍历 par 向量的规则是什么?
-
我需要跳过一个元素,然后选择接下来的两个。然后跳过下一个,挑下面两个以此类推……基本上跳过一个后挑一对连续的参数。
标签: r function user-defined-functions apply sapply