我想定义运算符%in%
,如果TRUE
上的参数在右边的列表中,则其操作将返回left
,否则返回FALSE
。该任务应在不使用循环的情况下实现。
### Creating a simple list
ell <- list( 2, c( 2, 5), list( c( 2, 8)), "xyz")
### Testing of selected elements
2 %in% ell
5 %in% ell
list( c( 2, 8)) %in% ell
list( list( 2, 8)) %in% ell
"xyz" %in% ell
[1] TRUE
[1] FALSE
[1] TRUE
[1] FALSE
[1] TRUE
答案 0 :(得分:1)
就像MrFlick在comment中所说的那样,不要覆盖内置运算符,它肯定会破坏某些内容。
试试这个,看看它是否能满足您的要求。由于R区分大小写,因此我将新运算符命名为%IN%
。
`%IN%` <- function(x, y){
x %in% unlist(y, recursive = FALSE)
}
2 %IN% ell
#[1] TRUE
5 %IN% ell
#[1] TRUE
list( c( 2, 8)) %IN% ell
#[1] TRUE
list( list( 2, 8)) %IN% ell
#[1] FALSE
"xyz" %IN% ell
#[1] TRUE