我正在尝试编写一个将用户指定的二元运算符(例如<)应用于栅格对象的函数。这样做很简单。例如:
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)
}
有没有办法在第一个函数中使用变量构造第二个函数的调用?
感谢您的帮助。
答案 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