2017-09-06 67 views
1

我無法弄清楚如何修改我的輸入文本,以便讓strwrap在給定的地方開始新行沒有之間的一個額外的行(段落中斷)。在R的strwrap回車

我想要的輸出:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
Vivamus malesuada ante eget lacus aliquam aliquet. Morbi a 
nulla in tortor rutrum pulvinar. 

Duis auctor condimentum magna ac commodo. Phasellus quis 
elementum purus, at ornare magna. Quisque sit amet vehicula 
risus. Suspendisse et et scelerisque velit: 
item #1 
item #2 
item #3 

我使用\ n得到一段休息,工作正常,但我如何獲得新的線沒有分段符,如項在列表底端?當我使用\ r ...

txt <- "Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
Vivamus malesuada ante eget lacus aliquam aliquet. Morbi a nulla 
in tortor rutrum pulvinar. 
\n 
Duis auctor condimentum magna ac commodo. Phasellus quis elementum purus, 
at ornare magna. Quisque sit amet vehicula risus. Suspendisse et 
scelerisque velit: 
\r 
item #1 
item #2 
item #3" 
writeLines(strwrap(txt, width=60)) 

...我得到了意想不到的結果:一個換行符,但有額外的空間縮進和一些並置和刪除文本:

#Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
#Vivamus malesuada ante eget lacus aliquam aliquet. Morbi a 
#nulla in tortor rutrum pulvinar. 
# 
#Duis auctor condimentum magna ac commodo. Phasellus quis 
#elementum purus, at ornare magna. Quisque sit amet vehicula 
# item #1 item #2se et scelerisque velit: 
#item #3 

做什麼我需要替換/ r以獲得單行換行,就像上面所需的輸出中的「velit:」和「item#1」一樣?我已經閱讀了strwrap文檔,並通過它的例子,但沒有找到答案。謝謝你的幫助。

+0

我試圖用會產生換行符的東西來替換\ r,而沒有空行。 \ n會產生額外的空行。 – lost

+0

當我在strwrap的輸入中使用\ n時,它會導致段落中斷。爲了獲得換行符,我需要輸入什麼內容?當需要段落中斷時,我想在代碼中留下一些/ n的實例。 – lost

+0

@lost,如果您只是想用換行符打印文本,請使用'cat(txt)',還是要保存字符串? – parth

回答

0

關於未來別人會發現這個問題的變化,我將分享我在這裏使用的解決方案。正如Wiktor在上面指出的那樣,strwrap沒有這個功能。我最終做的只是一個解決方法,它在經過strwrap後編輯文本。

我添加一個任意的字符序列到輸入的每一行的開始,我想以回車開始。下面我使用「/ r」。我通過strwrap發送輸入,在結尾添加兩個空行,然後解析輸出的每一行,刪除「/ r」並刪除空的前一行(段落中斷)。下面的代碼:

txt <- "Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
Vivamus malesuada ante eget lacus aliquam aliquet. Morbi a nulla 
in tortor rutrum pulvinar. 
\n 
Duis auctor condimentum magna ac commodo. Phasellus quis elementum purus, 
at ornare magna. Quisque sit amet vehicula risus. Suspendisse et 
scelerisque velit: 
\n\r item #1 
\n\r item #2 
\n\r item #3" 

sink("output.txt") 
lines <- append(strwrap(txt, width=100), c("",""), after = length(lines)) 
invisible(lapply(seq_along(lines), function(index) { 
    if (index != 1) { #skip first line 
    if (!grepl("\r ", lines[index])) { 
     writeLines(gsub("\r ", "", lines[index-1])) 
    } 
    } 
})) 
sink() 

這將產生與根據需要將輸出格式化文本,其中的項目在底部的列表是按回車/換行,但分段符標註在輸入與公正「分隔的.txt文件/ n「正常處理。