从父环境传递do.call参数

时间:2017-02-19 08:54:40

标签: r function

我尝试从其父环境向do.call传递参数,但变量在本地环境中。能够做到这一点真的很方便,是否有任何变通方法允许我在同一个函数中进行数据操作和do.call?

data(cars)
function1 <- function(data, function2, arguments){
        manipulated.data <- data[1:(dim(data)[1]/2),]  # Arbitrary function
        results <- do.call(function2, arguments)
}

function1(data = cars, function2 = "mean", arguments = list(arg1 = manipulated.data$speed)

1 个答案:

答案 0 :(得分:1)

有帮助吗?

data(cars)
function1 <- function(data, function2, arguments){
  manipulated.data <- data[1:(dim(data)[1]/2),]  # Arbitrary function
  do.call(function2, eval(parse(text=arguments)))
}

function1(data = cars, function2 = "mean", arguments = 'list(x = (manipulated.data$speed))')

我认为更好的解决方案应该使用lazyeval包...