2016-10-04 69 views
-1

我有一個由長字符串(字母數字+特殊字符)組成的字符向量,如下面所述。需要R-迭代組合字符向量的連續元素,直到到達空字符串元素

txt <- c(
     "Spicy jalapeno bacon ipsum dolor amet", 
     "tenderloin. pariatur quis", 
     "", 
     "consequat pancetta jerky", 
     "porchetta non chuck exercitation", 
     "laborum labore ball tip.", 
     "", 
     "", 
     "Duis swine turkey kielbasa. Strip ", 
     "steak ribeye laboris," 
     ) 

輸出是

> txt 
[1] "Spicy jalapeno bacon ipsum dolor amet tenderloin. pariatur quis" 
[2] "consequat pancetta jerky porchetta non chuck exercitation laborum labore ball tip." 
[3] "Duis swine turkey kielbasa. Strip steak ribeye laboris," 

需要考慮的事項:
1.空字符串元件/ s的充當linebreakers。他們可以連續超過一個。
2.將兩個元素連接在一起時,需要在兩者之間添加空格。

+0

已經打破了我的頭在嵌套了,而如果循環/語句,但要意識到有可能是一個更好的方式來做到這一點,尤其是考慮手頭有大量數據(80,000個元素)。 –

回答

2

其中一個方法可以做到這過多的:

library(dplyr) 
library(purrr) 

data_frame(txt=txt, grp=cumsum(txt=="")) %>% 
    group_by(grp) %>% 
    do(data_frame(joined=paste0(.$txt, collapse=" "))) %>% 
    mutate(joined=trimws(joined)) %>% 
    filter(joined != "") %>% 
    ungroup() %>% 
    select(joined) %>% 
    flatten_chr() 
## [1] "Spicy jalapeno bacon ipsum dolor amet tenderloin. pariatur quis"     
## [2] "consequat pancetta jerky porchetta non chuck exercitation laborum labore ball tip." 
## [3] "Duis swine turkey kielbasa. Strip steak ribeye laboris,"      
+0

我的確切思路!非常好 – Sotos

+0

這真棒..謝謝!我會花一小時試着理解這一點! –

+0

很酷。關鍵是要看'txt =「」'產生什麼'cumsum(txt ==「」)'產生什麼。不要猶豫,要求澄清。 – hrbrmstr