首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >R中字符串的部分匹配

R中字符串的部分匹配
EN

Stack Overflow用户
提问于 2019-04-23 20:33:51
回答 1查看 50关注 0票数 0

我想从汽车全名中创建一个新的汽车类型栏。

从喜欢这辆车的许多厂家和汽车的全称。第一个单词是campany的名字,接下来是汽车类型,然后是不正确的。

代码语言:javascript
运行
复制
y = c("Volkswagan The Newbeatle", "Cadilac CTS", "Cadilac CTS-V",....)

我有汽车类型矢量,实际上是每家公司的。这只是一个例子。

代码语言:javascript
运行
复制
x = c("SLR", "Newbeatle", "300C", "CTS-V", "Spider", "CTS", ...)

目标是通过与汽车全名向量匹配来返回汽车类型。

代码语言:javascript
运行
复制
result = c("Newbeatle", "CTS", "CTS-V", ...)

length(result)==length(y)
## TRUE

我已经得到了结果。但是教授要求我不要用"for“和"if”。

这是我的R代码(例如)。

代码语言:javascript
运行
复制
library(tidyverse)

# This is cartype
x <- c("abc", "def", "xyz", "lmn")
# This is car full name
y <- c("abc xxx", "lmn xxx", "xxx xxx xxx", "xyz xxxx x x", "xxx xxx", "def xxx") 
# Split car name by blank(" ")
ys <- str_split(y, " ", simplify = T) 

# I want to new colume.
result <- NULL

for(i in 1:length(ys)){
  for(j in 1:length(x)){
    if(length(grep(x[j], ys[i]))>0){
      result[i]=x[j]
    }
  }
}

> result
[1] "abc" "lmn" NA    "xyz" NA    "def"

这是工作,但显示警告和教授不推荐使用循环函数" for“和"if”来实现此目标。

EN

回答 1

Stack Overflow用户

发布于 2019-04-23 21:43:14

像这样的东西?

代码语言:javascript
运行
复制
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]}))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55811333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档