评估一个数据帧的多个功能并在R中绑定它们

时间:2013-07-12 14:56:45

标签: r lapply

我正在评估同一数据帧上的4个函数,每个函数返回一个向量。我想将结果合并到一个数据帧中。这就是我试过的:

df <- cbind(1:10,11:20)
myf1 <- function (data) {data[,1]*data[,2]}
myf2 <- function (data) {data[,1]^2}
myf3 <- function (data) {log(data[,2])}
myf4 <- function (data) {scale(data[,1])}

myfunc <- c('myf1','myf2','myf3','myf4')

mydf <- lapply(myfunc,function(x) eval(paste(x,'(df)',sep='')))

do.call(cbind, mydf)

1 个答案:

答案 0 :(得分:2)

> library(fortunes)
> fortune(106)

If the answer is parse() you should usually rethink the question.
   -- Thomas Lumley
      R-help (February 2005)

eval也是如此。

将您的功能放入列表中,然后在其上调用lapply

> myfunclist <- lapply(myfunc, get)
> mydf <- lapply(myfunclist, function(f) f(df))
> do.call(cbind, mydf)