2017-11-06 34 views
6

में सबसे लंबा शब्द निकालें, यदि 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 

परिणाम मैं देख रहा हूँ है: longest word in a string:

# A tibble: 3 x 2 
    a  b 
    <chr> <chr> 
1 ab cde cde 
2 bcde f bcde 
3 cde fg cde 

सवाल मैं पाया है के लिए निकटतम पोस्ट इस है। क्या किसी के पास भी एक आसान तरीका है?

+0

चूंकि आप एक संभव tidyverse समाधान के लिए कहा की एक संभव tidyverse संस्करण है, PoGibas से जवाब देने के लिए एक संभावित बराबर 'हो सकता है पुस्तकालय (tidyverse); tbl%>% mutate (b = map_chr (strsplit (a, ""), ~। [which.मैक्स (nchar (।))]) ' – markdly

+3

@ मार्कडी के रूप में ओपी ने टिडवर्स समाधान का अनुरोध किया है, कृपया अपने उत्तर को अनदेखा करने पर विचार करें। – zx8754

+0

मैं दूसरा -^ – Sotos

उत्तर

13

समाधान आधार का उपयोग कर अनुसंधान:

# Using OPs provided data 
tbl$b <- sapply(strsplit(tbl$a, " "), function(x) x[which.max(nchar(x))]) 

स्पष्टीकरण:

  • स्प्लिट शब्दों में प्रत्येक पंक्ति (strsplit)
  • निर्धारित शब्द लंबाई (nchar)
  • का चयन करें जो शब्द में सबसे लंबे समय तक है लाइन (which.max)
7

और यहाँ @ 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 
संबंधित मुद्दे