read.delim
lesen Daten in Tabellenformat (mit Zeilen und Spalten, wie in Excel). Es ist nicht sehr nützlich für das Lesen einer Textzeichenfolge.
Um Text aus einer Textdatei in R lesen Sie readLines()
verwenden können. readLines()
erstellt einen Zeichenvektor mit so vielen Elementen wie Textzeilen. Eine Zeile für diese Art von Software ist eine Textzeichenfolge, die mit einer Zeilenumbrüche endet. (Lesen Sie über Wikipedia newline.) Wenn Sie Text schreiben, geben Sie Ihre systemspezifischen Newline-Zeichen ein, indem Sie Return
drücken. In der Tat ist eine Textzeile nicht durch die Breite Ihres Softwarefensters definiert, sondern kann über viele visuelle Zeilen verlaufen. In der Tat ist eine Textzeile, was in einem Buch ein Absatz wäre. So readLines()
teilt Ihren Text in den Abschnitten:
> readLines("/path/to/tom_sawyer.txt")
[1] "\"TOM!\""
[2] "No answer."
[3] "\"TOM!\""
[4] "No answer."
[5] "\"What's gone with that boy, I wonder? You TOM!\""
[6] "No answer."
[7] "The old lady pulled her spectacles down and looked over them about the room; then she put them up and looked out under them. She seldom or never looked through them for so small a thing as a boy; they were her state pair, the pride of her heart, and were built for \"style,\" not service—she could have seen through a pair of stove-lids just as well. She looked perplexed for a moment, and then said, not fiercely, but still loud enough for the furniture to hear:"
[8] "\"Well, I lay if I get hold of you I'll—\"
Beachten Sie, dass Sie lange Text nach links hier in Stackoverflow bewegen kann. Diese siebte Zeile ist länger als diese Spalte breit ist.
Wie Sie sehen können, lesen readLines()
diesen langen siebten Absatz als eine Zeile. Und wie Sie auch sehen können, hat readLines()
vor jedem Anführungszeichen einen umgekehrten Schrägstrich eingefügt. Da R die einzelnen Zeilen in Anführungszeichen hält, muss es diese von denen unterscheiden, die Teil des ursprünglichen Textes sind. Daher "entgeht" es den ursprünglichen Anführungszeichen. Lesen Sie über escaping auf Wikipedia.
readLines()
Mai eine Warnung ausgeben, dass eine „unvollständige letzte Zeile“ wurde in der Datei gefunden. Das bedeutet nur, dass nach der letzten Zeile keine neue Zeile vorhanden war. Sie können diese Warnung mit readLines(..., warn = FALSE)
unterdrücken, aber Sie müssen nicht, es ist kein Fehler, und das Unterdrücken der Warnung wird nur die Warnmeldung unterdrücken.
Wenn Sie nicht wollen, nur Ausgabe Ihren Text der R-Konsole, sondern weiter verarbeiten, erstellen Sie ein Objekt, das die Ausgabe von readLines()
hält:
mytext <- readLines("textfile.txt")
Neben readLines()
, können Sie auch scan()
verwenden, readBin()
und andere Funktionen zum Lesen von Text aus Dateien. Blick in das Handbuch von ?scan
usw. Schauen Sie sich ?connections
Eingabe über viele verschiedene Methoden zu erlernen Dateien in R. lesen
Ich würde Ihnen dringend empfehlen, Ihren Text in einer .txt-Datei in einem Texteditor wie Vim, Notepad, TextWrangler usw. zu schreiben und nicht in einem Textverarbeitungsprogramm wie MS Word zu schreiben. Word-Dateien enthalten mehr als den auf dem Bildschirm angezeigten oder gedruckten Text, und diese werden von R gelesen. Sie können versuchen, zu sehen, was Sie erhalten, aber für gute Ergebnisse sollten Sie Ihre Datei als .txt-Datei aus Word speichern oder verfassen Sie es in einem Texteditor.
Sie können auch Ihren Text aus einer Textdatei öffnet in jeder anderen Software zu R oder legen Sie den Text in der R-Konsole copy-paste:
myothertext <- c("What did you do?
+ I wrote some text.
+ Ah, interesting.")
> myothertext
[1] "What did you do?\nI wrote some text.\nAh, interesting."
Hinweis, wie Return
Eingabe nicht R verursacht die auszuführen Befehl, bevor ich die Zeichenfolge mit ")
geschlossen. R antwortet nur mit +
und sagt mir, dass ich weiter bearbeiten kann. Ich habe diese Pluspunkte nicht eingegeben. Versuch es. Beachten Sie auch, dass die Zeilenumbrüche nun Teil Ihrer Textzeichenfolge sind. (Ich bin auf einem Mac, so dass mein Newline \n
ist.)
Wenn Sie geben Sie Ihren Text manuell, ich den ganzen Text als eine Zeichenfolge in einen Vektor laden würden:
x <- c("The text of your book.")
Sie konnten verschiedene laden Kapitel in verschiedene Elemente dieses Vektors:
y <- c("Chapter 1", "Chapter 2")
Für eine bessere Referenz, können Sie die Elemente nennen:
z <- c(ch1 = "This is the text of the first chapter. It is not long! Why was the author so lazy?", ch2 = "This is the text of the second chapter. It is even shorter.")
Jetzt können Sie die Elemente jeder dieser Vektoren aufgeteilt:
sentences <- strsplit(z, "[.!?] *")
Geben Sie ?strsplit
das Handbuch für diese Funktion zu lesen und es nimmt über die Attribute erfahren. Das zweite Attribut nimmt einen regulären Ausdruck an. In diesem Fall habe ich strsplit
gesagt, um die Elemente des Vektors an jedem der drei Interpunktionszeichen aufzuteilen, gefolgt von einem optionalen Leerzeichen (wenn Sie hier keinen Raum definieren, wird den resultierenden "Sätzen" ein Leerzeichen vorangestellt).
sentences
jetzt enthält:
> sentences
$ch1
[1] "This is the text of the first chapter" "It is not long"
[3] "Why was the author so lazy"
$ch2
[1] "This is the text of the second chapter" "It is even shorter"
Sie die einzelnen Sätze von Indizierungs zugreifen:
> sentences$ch1[2]
[3] "It is not long"
R wird nicht in der Lage zu wissen, dass es nicht nach "Mr." aufgeteilt werden soll. Sie müssen Ausnahmen in Ihrem regulären Ausdruck definieren. Dies zu erklären, sprengt den Rahmen dieser Frage.
Wie Sie R sagen würden, wie man Themen oder Objekte erkennt, habe ich keine Ahnung.
Willkommen bei SO! Bitte lesen Sie [Fragen stellen] (http://stackoverflow.com/help/on-topic) und [gute R Fragen schreiben] (http://stackoverflow.com/questions/5963269/how-to-make-a) -groß-r-reproduzierbar-Beispiel). Ohne einen Blick auf die eigentliche Datei ist dies ein wenig zu weit gefasst. – Thomas
Ich würde empfehlen, zuerst eine kleine Probe zu nehmen (vielleicht die erste Seite, einen Absatz oder paar Sätze) und ein paar der verfügbaren Methoden auszuprobieren. Dann erfahren Sie, was funktioniert und was nicht, und können mit spezifischen Fragen zurückkommen. –
Schauen Sie sich das tm-Paket an, Vignette hier http://cran.r-project.org/web/packages/tm/vignettes/tm.pdf Der erste Abschnitt enthält Informationen zum Datenimport – sckott