2017-09-06 10 views
1

strwrapにstrwrapに与えられた場所に新しい行を開始させるために、なしで、の間に余分な行(段落区切り)を入れずに入力テキストを変更する方法がわかりません。strwrapのキャリッジリターンR

マイ所望の出力:私は正常に動作段落の区切りを、取得するには、\ nを使用することができますが、私は、項目のリストでのように、段落の区切りせずに新しい行を得るのですか

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 

ボトム?私は\ 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 

何上記の出力で、 "velit:"と "item#1"のように、1行の改行を得るために/ rを置き換える必要がありますか?私はstrwrapのドキュメントを読んでその例を試しましたが、答えは見つかりませんでした。ご協力いただきありがとうございます。

+0

私は\ rを空行なしで改行するものに置き換えようとしています。 \ n余分な空白行になります。 – lost

+0

strwrapの入力に\ nを使用すると、段落区切りになります。改行を取得するには、入力に何を入力する必要がありますか?段落区切りが必要なときにコード内に/ nのインスタンスを残したい – lost

+0

@lost、改行でテキストを印刷したい場合は 'cat(txt)'を使うか、文字列も保存しますか? – parth

答えて

0

今後、他の人がこの質問を見つけた場合、私はここで使用した解決方法を共有します。 Wiktorが上で指摘したように、strwrapにはこの機能がありません。私がやり遂げたのは、文字列を読み込んだ後にテキストを編集するための回避策でした。

キャリッジリターンで開始したい入力の各行の先頭に任意の文字シーケンスを追加します。以下では、これに "/ r"を使用します。入力をstrwrapで送信し、最後に空白行を2つ追加し、出力の各行を解析して "/ 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 "は正常に処理されます。

関連する問題