R 从父环境向do.call传递参数

R 从父环境向do.call传递参数,r,function,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,但变量在本地环境中。如果能够做到这一点,那真的很方便,有没有什么变通方法可以让我在同一个函数中进行数据操作和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)
有帮助吗

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包…

do.callfunction2,function1中的listsubstitutearguments似乎与arguments=Operated.data$speed一起工作