R中字符串的部分匹配

R中字符串的部分匹配,r,variables,match,R,Variables,Match,我想从汽车全名中创建汽车类型的新列 从喜欢这款车的许多厂家和汽车的全称。第一个词是campany名称,下一个词是汽车类型,下一个词是否正确 y = c("Volkswagan The Newbeatle", "Cadilac CTS", "Cadilac CTS-V",....) 我有汽车类型向量,实际上是由各公司提供的。这只是一个例子 x = c("SLR", "Newbeatle", "300C", "CTS-V", "Spider", "CTS", ...) 目标是通过匹配汽车全名向量

我想从汽车全名中创建汽车类型的新列

从喜欢这款车的许多厂家和汽车的全称。第一个词是campany名称,下一个词是汽车类型,下一个词是否正确

y = c("Volkswagan The Newbeatle", "Cadilac CTS", "Cadilac CTS-V",....)
我有汽车类型向量,实际上是由各公司提供的。这只是一个例子

x = c("SLR", "Newbeatle", "300C", "CTS-V", "Spider", "CTS", ...)
目标是通过匹配汽车全名向量来返回汽车类型

result = c("Newbeatle", "CTS", "CTS-V", ...)

length(result)==length(y)
## TRUE
我已经知道结果了。但教授要求我不要使用“for”和“if”

这是我的R代码(例如)

库(tidyverse)
#这是卡式的
像这样的事

x <- c("abc", "def", "xyz", "lmn")
y <- c("abc xxx", "lmn xxx", "xxx xxx xxx", "xyz xxxx x x", "xxx xxx", "def xxx") 
ys <- str_split(y, " ", simplify = T) 
unlist(lapply(ys, function(l){x[l == x]}))
x
x <- c("abc", "def", "xyz", "lmn")
y <- c("abc xxx", "lmn xxx", "xxx xxx xxx", "xyz xxxx x x", "xxx xxx", "def xxx") 
ys <- str_split(y, " ", simplify = T) 
unlist(lapply(ys, function(l){x[l == x]}))