Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用grep()删除行,使用data.table删除行_R_Data.table_Lapply - Fatal编程技术网

使用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