Расщепление строки с символом остановки в R - PullRequest
1 голос
/ 21 марта 2019

Мои данные таковы: «Луи Гамильтон», «Тигровый волк», «Сачин Тендулкар», «Леброн Джеймс», «Майкл Сапожник», «Голливуд - карьера актера»

  • Мне нужно извлечьвсе символы до пробела или тире (-)
  • Мне нужно извлечь не более 10 символов

Мой желаемый результат - «Луи», «Тигр», «Сачин».«Леброн», «Майкл», «Голливуд»

Я пытался использовать приведенную ниже функцию, но она не работала

Sportstars<-function(charvec)
{min.length < 10, (x, hyph.pattern = Null)}

Может кто-нибудь помочь, пожалуйста?

1 Ответ

1 голос
/ 21 марта 2019

Мы можем использовать sub

sub("^([^- ]+).*", "\\1", v1)
#[1] "Louis"     "Tiger"     "Sachin"    "Lebron"    "Michael"   "Hollywood"

Или другой вариант с условием длины

grep("^.{1,10}$", sub("\\s+.*", "", v1), value = TRUE)
#[1] "Louis"     "Tiger"     "Sachin"    "Lebron"    "Michael"   "Hollywood"

Или с word из stringr

library(stringr)
word(v1, 1)
#[1] "Louis"     "Tiger"     "Sachin"    "Lebron"    "Michael"   "Hollywood"

Кроме того, если нам нужно реализовать последнее условие

sapply(strsplit(v1, "[– -]"), function(x) {
    x1 <- setdiff(x, "")
     x1[1][nchar(x1[1]) < 10]})
#[1] "Louis"     "Tiger"     "Sachin"    "Lebron"    "Michael"   "Hollywood"

данные

v1 <- c( "Louis Hamilton", "Tiger Wolf", "Sachin Tendulkar", 
  "Lebron James", "Michael Shoemaker", "Hollywood – Career as an Actor")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...