2015-05-20 27 views
1

我是R新手,在編程作業時遇到麻煩。RegEx和stringr包

的輸入是一首詩:

poem <- c(
    "Am Tag, an dem das L verschwand,", 
    "da war die Luft voll Klagen.", 
    "Den Dichtern, ach, verschlug es glatt", 
    "ihr Singen und ihr Sagen.", 
    "Nun gut. Sie haben sich gefasst.", 
    "Man sieht sie wieder schreiben.", 
    "Jedoch:", 
    "Solang das L nicht wiederkehrt,", 
    "muß alles Flickwerk beiben.") 

現在我需要提取所有的大寫字母和它們合併成一個字。 我用下面的代碼這樣做:

poem_cap <- str_extract_all(poem, "[[:upper:]]") 

然後我選擇不公開poem_cap

one_word <- unlist(poem_cap) 
one_word 

下一個邏輯步驟是應用str_c

one_word2 <- str_c(one_word, sep="") 

可是者繼續撲滅分開的信件! 如果我複製的one_word2輸出,用逗號分隔,並適用str_c到輸出,它的工作原理:

爲什麼會出現這種情況?我正在犯錯嗎?我如何將one_word2轉換成str_c我可以使用?

+1

使用'崩塌=「」'代替'sep =「」'。 –

回答

4

基地R的方法,你可以簡單地使用gsub在一個襯裏,從而使只有大寫字母,並將其粘貼(虛脫,如@大衛Arenburg下劃線):

paste(gsub('[^A-Z]','',poem), collapse='') 
#[1] "ATLLKDDSSNSMJSLF" 
+2

好的和有效的基地方法(+1)。 –