在R中使用终止符分割字符串

时间:2019-03-21 04:21:43

标签: r

我的数据如下: “路易斯汉密尔顿” “虎狼” “萨钦·滕杜尔卡” “勒布朗·詹姆斯” “ Michael Shoemaker” “好莱坞–演员生涯”

  • 我需要提取所有字符,直到到达空格或破折号(-)
  • 我最多只能提取10个字符

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

我尝试使用下面的功能,但没有用

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

请问有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

我们可以使用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")