我的数据如下: “路易斯汉密尔顿” “虎狼” “萨钦·滕杜尔卡” “勒布朗·詹姆斯” “ Michael Shoemaker” “好莱坞–演员生涯”
我想要的输出是 “路易” “虎” “萨钦” “勒布朗” “迈克尔” “好莱坞”
我尝试使用下面的功能,但没有用
Sportstars<-function(charvec)
{min.length < 10, (x, hyph.pattern = Null)}
请问有人可以帮忙吗?
答案 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")