R df通过函数列表中提供的不同函数处理每一列

时间:2014-04-29 07:09:35

标签: r

我想我的问题非常简单,但我还没能在网上找到解决方案。 我想用一组函数修改数据框。 功能在列表中定义。它们可能有多个参数,但是一个arg始终是在df中相关列上找到的值。 我只是为了方便而使用内置BOD数据集。列表可能是这样的:

funs <- list(
        fn1 = function(x) x+1,
        fn2 = function(x) x-1
)

函数调用可能如下所示:

searchedFunc(BOD, funs)

因此,在修改后,时间列值加1,请求列值减1。

1 个答案:

答案 0 :(得分:0)

您可以使用sapply更灵活

funs <- list(
  fn1 = function(x) x+1,
  fn2 = function(x) x-1               
)

searchedFunc <- function(df, fns) {
  sapply(seq(along.with=fns), function(i) fns[[i]](df[, i]))
}

searchedFunc(BOD, funs)

希望它有所帮助,

亚历