moa*_*t21 6 string r tidyverse
我想找到并提取字符串中最长的单词,如果可能的话使用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
Run Code Online (Sandbox Code Playgroud)
我要找的结果是:
# A tibble: 3 x 2
a b
<chr> <chr>
1 ab cde cde
2 bcde f bcde
3 cde fg cde
Run Code Online (Sandbox Code Playgroud)
我发现的问题的最接近的帖子是:字符串中最长的单词.有没有人有一个更简单的方法的想法?
PoG*_*bas 14
使用base R的解决方案:
# Using OPs provided data
tbl$b <- sapply(strsplit(tbl$a, " "), function(x) x[which.max(nchar(x))])
Run Code Online (Sandbox Code Playgroud)
说明:
strsplit)nchar)which.max)这是tidyverse@ PoGibas答案的可能版本
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
Run Code Online (Sandbox Code Playgroud)