将自定义函数应用于具有通用名称的任何数据集

时间:2016-02-08 02:24:44

标签: r function dplyr apply ranking

我有一个自定义函数,我想应用于任何共享公用名的数据集。

common_funct=function(rank_p=5){ 
  df =  ANY_DATAFRAME_HERE[ANY_DATAFRAME_HERE$rank <rank_p,]
  return(df)
}

我知道有了常见的功能,我可以做下面的事情,以获得每个功能的价值。

apply(mtcars,1,mean)

但如果我想这样做:

apply(any_dataset, 1, common_funct(anyvalue))

我将如何传递它?

library(dplyr)
mtcars$rank = dense_rank(mtcars$mpg)
iris$rank = dense_rank(iris$Sepal.Length)

现在我将如何将同一个函数应用于这两个值?

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题,我会建议你把数据框放到一个列表中并应用它。所以

## Your example function
common_funct=function(df, rank_p=5){ 
  df[df$rank <rank_p,]
}

## Sanity check
common_funct(mtcars)
common_funct(iris)

接下来创建数据框列表

l = list(mtcars, iris)

并使用lapply

lapply(l, common_funct)