首页 > 解决方案 > 参数是否包含在页面列表中?

问题描述

我想定义 operator ,如果 上的参数在右侧的列表中,则%in%其操作是返回,否则返回。该任务应该在不使用循环的情况下实现。TRUEleftFALSE

### 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

标签: rlistcompare

解决方案


就像 MrFlick 在评论中所说的那样,不要覆盖内置运算符,它肯定会破坏某些东西。
试试这个,看看它是否符合您的要求。我已将新运算符命名为%IN%,因为 R 区分大小写。

`%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

推荐阅读