0

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

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)
4

1 回答 1

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)
于 2013-07-12T15:02:06.453 回答