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