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

时间:2019-03-27 16:15:26

标签: 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}
  }
}

,它根据输入参数xcaracter返回一个函数。我有另一个函数,递归地调用该函数,其参数取决于一些初始数据。

“不等式”返回的此函数另存为

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

我想知道是否可以通过传递给x的文字参数来保存它。因此,如果这些参数为x=1 caracter="Y",我会得到

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

1 个答案:

答案 0 :(得分:2)

也许将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