我想找到并提取字符串中最长的单词,如果可能的话使用tidyverse
包。
library(tidyverse)
tbl <- tibble(a=c("ab cde", "bcde f", "cde fg"), b=c("cde", "bcde", "cde"))
tbl
# A tibble: 3 x 1
a
<chr>
1 ab cde
2 bcde f
3 cde fg
我要找的结果是:
# A tibble: 3 x 2
a b
<chr> <chr>
1 ab cde cde
2 bcde f bcde
3 cde fg cde
我发现的问题的最接近的帖子是:longest word in a string。有没有人有更简单的想法?
答案 0 :(得分:14)
使用基础R的解决方案:
# Using OPs provided data
tbl$b <- sapply(strsplit(tbl$a, " "), function(x) x[which.max(nchar(x))])
说明:
strsplit
)nchar
)which.max
)答案 1 :(得分:7)
这是@ PoGibas答案的可能tidyverse
版本
library(tidyverse)
tbl <- tibble(a=c("ab cde", "bcde f", "cde fg"))
tbl %>%
mutate(b = map_chr(strsplit(a, " "), ~ .[which.max(nchar(.))]))
#> # A tibble: 3 x 2
#> a b
#> <chr> <chr>
#> 1 ab cde cde
#> 2 bcde f bcde
#> 3 cde fg cde