我尝试从其父环境向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)
答案 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包...