我已经定义了下一个函数
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
返回一个函数。我有另一个函数,递归地调用该函数,其参数取决于一些初始数据。
“不等式”返回的此函数另存为
function(y) {y[2] < x}
<bytecode: 'code'>
<environment: 'code'>
我想知道是否可以通过传递给x
的文字参数来保存它。因此,如果这些参数为x=1
caracter="Y"
,我会得到
function(y) {y[2] < 1}
<bytecode: 'code'>
<environment: 'code'>
答案 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