使用grep()删除行,使用data.table删除行
我正在学习数据表是如何工作的,我正在尝试对两列(使用grep()删除行,使用data.table删除行,r,data.table,lapply,R,Data.table,Lapply,我正在学习数据表是如何工作的,我正在尝试对两列(id1和id2)使用grep())删除不返回TRUE的行 我知道我必须使用函数lappy(),但它总是返回以下错误: argument 'pattern' has length > 1 and only the first element will be used 我试过这个(我知道它错了): 我正在处理的数据: structure(list(id = c(52L, 52L, 52L, 52L, 54L, 54L, 84L, 84L, 8
id1
和id2
)使用grep()
)删除不返回TRUE
的行
我知道我必须使用函数lappy()
,但它总是返回以下错误:
argument 'pattern' has length > 1 and only the first element will be used
我试过这个(我知道它错了):
我正在处理的数据:
structure(list(id = c(52L, 52L, 52L, 52L, 54L, 54L, 84L, 84L,
87L, 87L, 129L, 129L, 130L, 130L, 130L), id1 = c("8113H187",
"3505H6", "3505H6", "3505H6", "3505H6", "3505H6", "3505H6", "3505H6",
"8113H187", "8113H187", "3505H6", "3505H6", "3505H6", "3505H6",
"3505H6"), id2 = c("3505H6856", "3505H6856", "3505H6856", "3505H6856",
"3505H67158", "3505H67158", "3505H63188", "3505H63188", "3505H64691",
"3505H64691", "3505H664133", "3505H664133", "3505H658134", "3505H658134",
"3505H658134")), .Names = c("id", "id1", "id2"), row.names = c(NA,
-15L), class = c("data.table", "data.frame"), .internal.selfref = <pointer: 0x00000000064f0788>)
结构(列表id=c(52L,52L,52L,52L,54L,54L,84L,84L,
87L、87L、129L、129L、130L、130L、130L),id1=c(“8113H187”,
“3505H6”、“3505H6”、“3505H6”、“3505H6”、“3505H6”、“3505H6”、“3505H6”、“3505H6”、“3505H6”,
“8113H187”、“8113H187”、“3505H6”、“3505H6”、“3505H6”、“3505H6”、“3505H6”,
“3505H6”,id2=c(“3505H6856”、“3505H6856”、“3505H6856”、“3505H6856”、“3505H6856”,
“3505H67158”、“3505H67158”、“3505H63188”、“3505H63188”、“3505H64691”,
“3505H64691”、“3505H664133”、“3505H664133”、“3505H658134”、“3505H658134”,
“3505H658134”),.Names=c(“id”、“id1”、“id2”),row.Names=c(NA,
-15L),class=c(“data.table”,“data.frame”),.internal.selfref=)
我们可以使用
Map
将'id1'中的相应元素作为模式
与'ID2'中的元素进行比较
DT[unlist(Map(grepl, id1, id2))]
grepl
模式参数未矢量化。尝试类似于library(stringi)的方法;DT[,stri\u detect\u fixed(id2,id1)]
DT[unlist(Map(grepl, id1, id2))]
DT[mapply( grepl, id1, id2), ]
# id id1 id2
# 1: 52 3505H6 3505H6856
# 2: 52 3505H6 3505H6856
# 3: 52 3505H6 3505H6856
# 4: 54 3505H6 3505H67158
# 5: 54 3505H6 3505H67158
# 6: 84 3505H6 3505H63188
# 7: 84 3505H6 3505H63188
# 8: 129 3505H6 3505H664133
# 9: 129 3505H6 3505H664133
# 10: 130 3505H6 3505H658134
# 11: 130 3505H6 3505H658134
# 12: 130 3505H6 3505H658134