首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中带有停止字符的字符串拆分

R中带有停止字符的字符串拆分
EN

Stack Overflow用户
提问于 2019-03-21 04:21:42
回答 1查看 45关注 0票数 1

我的数据如下:“路易·汉密尔顿”、“老虎狼”、“萨钦·坦杜卡尔”、“勒布朗·詹姆斯”、“迈克尔·休梅克”、“好莱坞--演员生涯”

  • 我需要提取所有字符,直到到达空格或破折号(-)为止。
  • 我不需要提取超过10个字符

我想要的输出是“路易”、“老虎”、“萨钦”、“勒布朗”、“迈克尔”、“好莱坞”

我试过使用下面的函数,但没有起作用

代码语言:javascript
复制
Sportstars<-function(charvec)
{min.length < 10, (x, hyph.pattern = Null)}

有人能帮忙吗?

EN

回答 1

Stack Overflow用户

发布于 2019-03-21 04:23:12

我们可以使用sub

代码语言:javascript
复制
sub("^([^- ]+).*", "\\1", v1)
#[1] "Louis"     "Tiger"     "Sachin"    "Lebron"    "Michael"   "Hollywood"

或另一个具有长度条件的版本。

代码语言:javascript
复制
grep("^.{1,10}$", sub("\\s+.*", "", v1), value = TRUE)
#[1] "Louis"     "Tiger"     "Sachin"    "Lebron"    "Michael"   "Hollywood"

或者是来自wordstringr

代码语言:javascript
复制
library(stringr)
word(v1, 1)
#[1] "Louis"     "Tiger"     "Sachin"    "Lebron"    "Michael"   "Hollywood"

另外,如果我们也需要实现最后一个条件

代码语言:javascript
复制
sapply(strsplit(v1, "[– -]"), function(x) {
    x1 <- setdiff(x, "")
     x1[1][nchar(x1[1]) < 10]})
#[1] "Louis"     "Tiger"     "Sachin"    "Lebron"    "Michael"   "Hollywood"

数据

代码语言:javascript
复制
v1 <- c( "Louis Hamilton", "Tiger Wolf", "Sachin Tendulkar", 
  "Lebron James", "Michael Shoemaker", "Hollywood – Career as an Actor")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55273751

复制
相关文章

相似问题

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