Показать значение в функции, переданной через аргументы - PullRequest
1 голос
/ 27 марта 2019

Я определил следующую функцию

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 и caracter.У меня есть другая функция, в которой я вызываю эту функцию рекурсивно, аргументы которой зависят от некоторых исходных данных.

Эта функция, возвращаемая "inequalizer", сохраняется как

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

Я хочу знать, есть лиэто какой-то способ сохранить его с помощью литерального аргумента, переданного x.Так что, если эти параметры x=1 caracter="Y", я бы получил

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

1 Ответ

2 голосов
/ 27 марта 2019

Может хранить 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...