R:在两个列表中查找相同的字符串

时间:2016-05-04 20:05:05

标签: r list vector intersect

我有两个字符串列表,想要找到两个列表中的字符串。

我尝试将列表转换为向量,这样我就可以使用交叉或setequal但是将所有字符串转换为数字并且(如果有一个明显的答案,我可以弄清楚道歉),我可以& #39; t似乎在没有发生这种情况的情况下转换列表。

前进的最佳方式是什么?

编辑: 我有这些数据框:

dput(s)
structure(list(V1 = structure(c(3L, 2L, 1L, 4L), .Label = c("24d2afb212410711de0e237e5435e104", 
"2a3d9ca791a579a14883de538a012e24", "a90b03209a8095ec406809d89d5035c3", 
"f271eb38cc409c6bfe9dcf2bfcab8471"), class = "factor")), .Names = "V1", row.names = c(NA, 
-4L), class = "data.frame")

dput(r)
structure(list(V1 = structure(c(2L, 1L, 4L, 3L), .Label = c("24d2afb212410711de0e237e5435e104", 
"2a3d9ca791a579a14883de538a012e24", "7320e2e921df862968954d4b60e2a80a", 
"a9f47ec7c488d2bcddf2c1adc2bf6305"), class = "factor")), .Names = "V1", row.names = c(NA, 
-4L), class = "data.frame")

我想找到两者中的字符串,即

2a3d9ca791a579a14883de538a012e2424d2afb212410711de0e237e5435e104

as.character()不能保留这些字符串;是否还有其他方法可以将它们转换为因子,还是有其他可以更好地运作的操作?

1 个答案:

答案 0 :(得分:0)

您还需要在数据框中指定列。

使用intersect

intersect(r$V1, s$V1)
#[1] "2a3d9ca791a579a14883de538a012e24" "24d2afb212410711de0e237e5435e104"

使用grep

unlist(sapply(r$V1, function(i)grep(i, s$V1, value = TRUE)))
#[1] "2a3d9ca791a579a14883de538a012e24" "24d2afb212410711de0e237e5435e104"