2012-06-19 13 views
6

मैं तार के समूह है बिना काटें स्ट्रिंग, जिनमें से कुछ काफी लंबे होते हैं, जैसे इतना:आर: बंटवारे शब्द

movie.titles <- c("Il divo: La spettacolare vita di Giulio Andreotti","Defiance","Coco Before Chanel","Happy-Go-Lucky","Up","The Imaginarium of Doctor Parnassus") 

मैं अब की, कहते हैं, 30 अक्षर एक अधिकतम करने के लिए इन तार काटना चाहते हैं , लेकिन इस तरह से इस प्रक्रिया में कोई भी शब्द विभाजित नहीं होते हैं और आदर्श रूप से यदि स्ट्रिंग को छोटा कर दिया जाता है तो स्ट्रिंग के अंत में इलिप्स को जोड़ा जाता है।

उत्तर

4

यहाँ एक अनुसंधान आधारित समाधान है:

trimTitles <- function(titles) { 
    len <- nchar(titles) 
    cuts <- sapply(gregexpr(" ", titles), function(X) { 
      max(X[X<27])}) 
    titles[len>=27] <- paste0(substr(titles[len>=27], 0, cuts[len>=27]), "...") 
    titles 
} 
trimTitles(movie.titles) 
# [1] "Il divo: La spettacolare ..." "Defiance"      
# [3] "Coco Before Chanel"   "Happy-Go-Lucky"    
# [5] "Up"       "The Imaginarium of Doctor ..." 
0

मैं तुम्हें abbreviate समारोह पर एक नज़र डालें सिफारिश करेंगे। यह तारों को संक्षिप्त करता है, और कुछ नियंत्रण की अनुमति देता है। देखें:

http://stat.ethz.ch/R-manual/R-devel/library/base/html/abbreviate.html

आदमी पेज के लिए।

संबंधित मुद्दे