我有一个包含两列的数据框:一个ID号,然后是一个文本字符串:
df <- data.frame(ID=c(1, 2, 3, 4, 5, 6, 7, 8),
text = c("lorem ipsum dolor sit ABC, consectetur adipiscing XYZ",
"veritatis et quasi ABC architecto beatae vitae dicta YXZ explicabo",
"dignissimos ducimus CBA blanditiis praesentium ZXY deleniti",
"earum rerum hic BCA tenetur a sapiente delectus, ut aut XYZ",
"enim ad minima veniam, ACB quis nostrum corporis ZYX suscipit",
"cillum dolore BAC eu fugiat nulla pariatur ZXY",
"sunt CBA, ABC in culpa qui officia deserunt mollit XYZ anim",
"debitis ACB aut rerum necessitatibus YZX, XZY saepe eveniet"))
我还有两个包含特定搜索词的不同列表:
listX <- c("ABC", "ACB", "BAC", "BCA", "CAB", "CBA")
listY <- c("XYZ", "XZY", "YXZ", "YZX", "ZXY", "ZYX")
我想搜索数据框每行的文本,并构建一个新的数据框,其中一列包含ID号,其他列包含listX
和listY
中特定搜索项的匹配/组合结果.
output <- data.frame(ID=c(1,2,3,4,5,6,7,7,8,8),
X=c("ABC","ABC","CBA","BCA","ACB","BAC","CBA","ABC","ACB","ACB"),
Y=c("XYZ","YXZ","ZXY","XYZ","ZYX","ZXY","XYZ","XYZ","YZX","XZY"))
有没有办法以编程方式生成包含每种可能组合的输出数据框?我知道,对于不同的结果,我可能会用grepl
或merge
以某种方式做到这一点.但这将是一种丑陋的暴力手段,而且 list 比本例中给出的要长得多.提前谢谢您!