同时将功能列表应用于一个矩阵

时间:2019-09-23 21:44:20

标签: r apply

我有一个矩阵/数据帧,即10列和1.000.000行。现在,我想在此矩阵上应用20个不同的函数并存储结果。每个功能就像

df %>%  group_by(`column1`, `column2`, `column3`, `column4`) %>% filter (n()>20 )

该功能之后,我想将此矩阵/数据帧保存到一个列表中,因此应该有一个包含20种不同矩阵/数据帧的列表。

我循环执行此操作,但这确实很慢。我对apply进行了一些尝试,但无法真正弄清楚我想念的是什么。 我的实际尝试是:

apply(X=df,MARGIN=c(1,2),FUN=function(df) df %>%  group_by(`column1`, `column2`, `column3`, `column4`) %>% filter (n()>20 ))

出现错误:

  

UseMethod(“ group_by_”)中的错误:     没有适用于“ group_by_”的适用方法应用于“字符”类的对象

我闻到我离解决方案不远。你能给我一个提示吗?

感谢和问候

1 个答案:

答案 0 :(得分:1)

这里是一个例子。这里,funs包含要应用的功能的名称,而ml是结果列表。希望这会给您足够的提示以实现您想要的。如果您需要特定问题的帮助,请提供一些数据。

funs <- c("sqrt", "log", "exp")

m <- matrix(runif(1.e4), 100, 100)

am <- function(f, m){
  apply(m, MARGIN = 1:2, match.fun(f))
}

ml <- lapply(funs, am, m = m)