2017-03-04 6 views
1

Ich habe eine Reihe von Webchat Protokolle wie folgt aus:readlines in R auf r n nicht n

Agent: Click here. \n Then click here. \n Then do this. \r\n 

Customer: Show me. \r\n 

Agent: Ok. \n One Second. \r\n 

Wenn ich sie in RI importieren möchten nur behandeln \ r \ n als die neue Linie, nicht n. Ich sehe keine Option, das in readline() zu tun? Gibt es einen besten Weg, dies zu tun?

Hier ist eine Lösung auf Stack-Überlauf in Python: How to split only on carriage returns with readlines in python?

Antwort

4

ich nachging, ob man diese readLines() zu tun verwenden könnte, aber ich habe nicht eine einfache Möglichkeit, sehe es mit readLines() zu tun.

Es scheint, dass die Basisfunktion readline() hier nicht sinnvoll ist.

Ein Work-Around ist, den Text mit Scan zu lesen, dann das Ergebnis analysieren.

Zum Beispiel, wenn Sie Ihren Text in foo.txt ist:

words <- scan("foo.txt", what = "character") 
words2 <- words[words != "\\n"] 
onepar <- paste(words2, collapse = " ") 
library(stringr) 
lines <- str_split(onepar, pattern = fixed(" \\r\\n"), simplify = TRUE) 
lines 

    [,1]            [,2]      [,3]      [,4] 
[1,] "Agent: Click here. Then click here. Then do this." " Customer: Show me." " Agent: Ok. One Second." "" 

Sie könnten dann die Leerzeichen entfernen etwas ähnliches zu bekommen, was ich denke, dass Sie wollen.

Ich wünschte, ich hätte eine elegantere Lösung.

+1

Ich denke, es wird ein wenig einfacher, wenn Sie 'readr :: read_file' anstelle von' scan' verwenden. – Scarabee