R 在通过参数传递的函数中显示值

R 在通过参数传递的函数中显示值,r,function,R,Function,我已经定义了下一个函数 inequalizer <- function(x,caracter) { if(caracter=="X") { function(y) {y[1] < x} } else if(caracter=="Y") { function(y) {y[2] < x} } else { function(y) {y[3] < x} } } 我想知道是否有办法通过传递给x的literal参数保存它。因此,如果这些参数

我已经定义了下一个函数

inequalizer <- function(x,caracter) {
  if(caracter=="X") {
    function(y) {y[1] < x}
  } else if(caracter=="Y") {
    function(y) {y[2] < x}
  } else {
    function(y) {y[3] < x}
  }
}
我想知道是否有办法通过传递给
x
的literal参数保存它。因此,如果这些参数是
x=1
caracter=“Y”
,我将得到

function(y) {y[2] < 1}
<bytecode: 'code'>
<environment: 'code'>
函数(y){y[2]<1}

可能将
x
存储为
attr

inequalizer <- function(x, caracter) {
    if(caracter=="X") {
        foo = function(y) {y[1] < x}
        attr(foo, "x") = x
        foo
    } else if(caracter=="Y") {
        foo = function(y) {y[2] < x}
        attr(foo, "x") = x
        foo
    } else {
        foo = function(y) {y[3] < x}
        attr(foo, "x") = x
        foo
    }
}

myf = inequalizer(5, "X")
myf
#function(y) {y[1] < x}
#<environment: 0x000000001c12e2d0>
#attr(,"x")
#[1] 5

不平等查询
?匹配。请致电
也查看谢谢!我用这个,它的工作,但忘了评分和评论!
inequalizer <- function(x, caracter) {
    if(caracter=="X") {
        foo = function(y) {y[1] < x}
        attr(foo, "x") = x
        foo
    } else if(caracter=="Y") {
        foo = function(y) {y[2] < x}
        attr(foo, "x") = x
        foo
    } else {
        foo = function(y) {y[3] < x}
        attr(foo, "x") = x
        foo
    }
}

myf = inequalizer(5, "X")
myf
#function(y) {y[1] < x}
#<environment: 0x000000001c12e2d0>
#attr(,"x")
#[1] 5