R - 使用关系运算符作为变量在函数内创建函数调用

时间:2018-04-04 18:27:07

标签: r function variables r-raster

我正在尝试编写一个将用户指定的二元运算符(例如<)应用于栅格对象的函数。这样做很简单。例如:

selection <- raster::overlay(x = data, fun = function(x) {return(x < 2)}

我的问题是这个代码将在一个函数中运行,我想用它来指定二元运算符和条件值(在上面的例子中为2)作为变量。例如:

my.func <- function(data, binary_operator, value){
    selection <- raster::overlay(x=data, fun=function(x) {x criteria value})
return(selection)
}

我试图将该函数构建为调用而没有成功。

my.func <- function(data, binary_operator, value){
selection <- raster::overlay(x=data, fun=function(x) {call(sprintf("x %s %s", criteria, value))}
return(selection)

}

有没有办法在第一个函数中使用变量构造第二个函数的调用?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

编写如下代码:

var a = [1];
var b = a;
b = [2];
console.log(a, b); // it logs [1] [2]

您需要将其称为

my.func <- function(data, binary_operator, value){
    selection <- raster::overlay(x=data, fun=function(x) binary_operator(x, value))
    return(selection)
}

(带引号的反引号)。如果您想允许运营商my.func(data, `<`, 2) ,可以使用"<"

do.call

这适用于任何一种形式的论证。

答案 1 :(得分:0)

这个例子可能比实际情况简单,但是在你使用的例子中,你会更直接地做:

selection <- data < 2
相关问题