R 名称搜索的数据表解决方案

R 名称搜索的数据表解决方案,r,data.table,grepl,R,Data.table,Grepl,我有一个data.table“NAMES”,其中包含各种列名;所有列都包含一个名称列表,这些名称的大小写可能正确,也可能不正确,例如,有些首字母是大写的,但有些不是大写的 我想创建“名称\子集”,它只包含“名称”中的行,这些行在任何列中包含ma或ma或am或am 我目前的尝试不是一个好的解决方案,因为我不知道如何在data.table中搜索所有行,但一次只搜索一列,而且我不知道如何使其不区分大小写。多谢各位 我希望的结果是: NAMES = data.table(names1 = c("John

我有一个data.table“NAMES”,其中包含各种列名;所有列都包含一个名称列表,这些名称的大小写可能正确,也可能不正确,例如,有些首字母是大写的,但有些不是大写的

我想创建“名称\子集”,它只包含“名称”中的行,这些行在任何列中包含ma或ma或am或am

我目前的尝试不是一个好的解决方案,因为我不知道如何在data.table中搜索所有行,但一次只搜索一列,而且我不知道如何使其不区分大小写。多谢各位

我希望的结果是:

NAMES = data.table(names1 = c("John","mary","james","Mark","abi"), 
                   list1 = c("bam","cameron","tony","lucas","tim"))
NAMES_SUBSET = NAMES[names1 %like% "ma" | list1 %like% "am"]

我会用这样的方式:

names1  list1
John    bam
mary    cameron
james   tony
Mark    lucas
> NAMES_SUBSET
   names1   list1
1:   John     bam
2:   mary cameron
3:  james    tony
4:   Mark   lucas
如果您经常这样做,可以将其编写为如下函数:

names1  list1
John    bam
mary    cameron
james   tony
Mark    lucas
> NAMES_SUBSET
   names1   list1
1:   John     bam
2:   mary cameron
3:  james    tony
4:   Mark   lucas
也许是像名字一样的东西[applyNAMES,1,functionx anygreplam | ma,tolowerx]?
> search_all_dtcols(NAMES, "ma|am")
   names1   list1
1:   John     bam
2:   mary cameron
3:  james    tony
4:   Mark   lucas