Text-Datei als Vektor einlesen
Text-Datei als Vektor einlesen
Hallo, ich möchte eine .txt-Datei in R einlesen (Die Datei besteht nur aus einem "Wort", und das sind 10 Millionen Zahlen). Nun möchte ich, dass diese 10 Millionen Zahlen in einen Vektor mit 10 Millionen Elementen "gepackt" werden. Ich habe es schon mit der scan-Funktion probiert, jedoch weiß ich nicht welche Zusatzinformation ich der Funktion geben muss, dass er die Datei auseinanderpflückt. Ich bekomme es schon hin, dass ein Vektor erstellt wird, aber jedes Mal nur so, dass in diesem einen Element dann diese 10 Millionen Zahlen stehen und wenn ich es ausgeben will, schmiert mir R ab. So sieht mein Befehl bisher aus:
-----------------------------------------
pi.str <- c(scan(file="C:\\Users\\pi-10-million.txt",what=character(),sep="",flush=TRUE))
pi.str
-----------------------------------------
Danke schonmal für die Hilfe.
lax
-----------------------------------------
pi.str <- c(scan(file="C:\\Users\\pi-10-million.txt",what=character(),sep="",flush=TRUE))
pi.str
-----------------------------------------
Danke schonmal für die Hilfe.
lax
Re: Text-Datei als Vektor einlesen
Hallo lax,
ich nehme an, zwischen den Zahlen steht kein Trennzeichen, sondern ist halt nur eine Zahl wie "3.14.....". Ich denke, hier kann das Paket stringr möglicherweise weiterhelfen.
ich nehme an, zwischen den Zahlen steht kein Trennzeichen, sondern ist halt nur eine Zahl wie "3.14.....". Ich denke, hier kann das Paket stringr möglicherweise weiterhelfen.
Viele Grüße,
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube
Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube
Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
Re: Text-Datei als Vektor einlesen
Eine leicht veränderte Version klappt bei mir ohne Probleme - und fix:
Code: Alles auswählen
Zahl <- paste(sample(0:9, 10000000, replace=TRUE), collapse="")
write.table(Zahl, "D:/temp/Zahl.txt", row.names=FALSE, col.names=FALSE, quote=FALSE)
Zahl.str <- scan(file="D:/temp/Zahl.txt", what=character(), flush=TRUE)
Zahl == Zahl.str
Re: Text-Datei als Vektor einlesen
Hallo Athomas, das hilft mir leider nicht. Die Datei besteht aus den ersten 10 Millionen Nachkommastellen von Pi. Ich möchte, dassAthomas hat geschrieben: ↑Fr Jan 03, 2020 11:17 am Eine leicht veränderte Version klappt bei mir ohne Probleme - und fix:
Code: Alles auswählen
Zahl <- paste(sample(0:9, 10000000, replace=TRUE), collapse="") write.table(Zahl, "D:/temp/Zahl.txt", row.names=FALSE, col.names=FALSE, quote=FALSE) Zahl.str <- scan(file="D:/temp/Zahl.txt", what=character(), flush=TRUE) Zahl == Zahl.str
und keine 10 Millionen Zufallszahlen. Immer wenn ich mit scan versuche einzulesen, dann macht er diesen Vektor mit genau einem Element und den möchte ich aufsplitten. Wenn ich deine Version versuche, schmiert mir der Rechner sowohl bei Zahl.str,als auch bei Zahl ab (oder braucht ewig).
LG lax
Re: Text-Datei als Vektor einlesen
lax, mein Gudster, ich habe Dein 10 Mio-Pi nicht und musste mir mit einer Folge von 10 Mio zufälligen Ziffern behelfen.
Die habe ich gespeichert und völlig problemlos wieder eingelesen.
Da ich nicht glaube, dass R Pi erkennt und dann bockig wird, sollte es eigentlich auch bei Dir klappen!
Wenn nicht, ist mit Deinen Daten etwas anders als in meinem Beispiel - da meine Glaskugel gerade in Wartung ist, kann ich Dir aber nicht sagen, was...
Zur Not müsstest Du Dein Pi (oder ein ausreichend langes Anfangsstück) hier mal zeigen!
Ergänzung: Auf meinem Raspberry Pi 4 (allerdings mit satten 4GB RAM) dauert das Einlesen von der micro-SD-Karte 0.45 sec.
Die habe ich gespeichert und völlig problemlos wieder eingelesen.
Da ich nicht glaube, dass R Pi erkennt und dann bockig wird, sollte es eigentlich auch bei Dir klappen!
Wenn nicht, ist mit Deinen Daten etwas anders als in meinem Beispiel - da meine Glaskugel gerade in Wartung ist, kann ich Dir aber nicht sagen, was...
Zur Not müsstest Du Dein Pi (oder ein ausreichend langes Anfangsstück) hier mal zeigen!
Ergänzung: Auf meinem Raspberry Pi 4 (allerdings mit satten 4GB RAM) dauert das Einlesen von der micro-SD-Karte 0.45 sec.
Re: Text-Datei als Vektor einlesen
Hey Athomas,
ich weiß jetzt mittlerweile was du gemacht hast, aber das war leider nicht das Resultat, das ich erzielen wollte. Den Vektor selbst konnte ich auch schon einlesen. Aber meine Intention ist es nun, diesen Vektor aufzuteilen (dass er nicht mehr die Länge 1 hat) und jede einzelne Zahl der Nachkommastellen von Pi (oder der Zahlen, die du mit paste zusammengefügt hast) ein einzelnes Element in diesem Vektor ist. Ich hoffe, jetzt ist klar, welches Ergebnis ich erzielen will. Danke schon mal für eure Gedanken bisher.
Lg lax
ich weiß jetzt mittlerweile was du gemacht hast, aber das war leider nicht das Resultat, das ich erzielen wollte. Den Vektor selbst konnte ich auch schon einlesen. Aber meine Intention ist es nun, diesen Vektor aufzuteilen (dass er nicht mehr die Länge 1 hat) und jede einzelne Zahl der Nachkommastellen von Pi (oder der Zahlen, die du mit paste zusammengefügt hast) ein einzelnes Element in diesem Vektor ist. Ich hoffe, jetzt ist klar, welches Ergebnis ich erzielen will. Danke schon mal für eure Gedanken bisher.
Lg lax
Re: Text-Datei als Vektor einlesen
Code: Alles auswählen
library(stringr)
Ergebnis <- as.vector(str_split_fixed(Zahl.str, pattern = "", n = nchar(Zahl.str)))
Re: Text-Datei als Vektor einlesen
Hallo lax,
ich finde es auch immer ganz spannend, wenn man sich mit erwähnten Paketen oder Funktionen vertraut macht. Gerade das Paket stringr hilft weiter, wenn ein Objekt , das Elemente ohne Trennzeichen enthält, in einzelne Elemente separiert werden soll.
ich finde es auch immer ganz spannend, wenn man sich mit erwähnten Paketen oder Funktionen vertraut macht. Gerade das Paket stringr hilft weiter, wenn ein Objekt , das Elemente ohne Trennzeichen enthält, in einzelne Elemente separiert werden soll.
Viele Grüße,
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube
Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube
Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
Re: Text-Datei als Vektor einlesen
Natürlich kann man ohne fremde Pakete vieles auch in Standard-R selbst programmieren. Das hier funktioniert beispielsweise mit 10000 Zeichen flott, mit 100.000 akzeptabel, mit 1 Mio länger, als die meisten Nerv haben, von 10 Mio ganz zu schweigen:
Packageautoren stecken da ganz andere Zeit in die Optimierung. Der Thread wird aber halt nicht besser, wenn Athomas Vorschlag, die Daten zu zeigen und Students Vorschlag, sich ein Paket anzuschauen, jeweils ignoriert wird.
LG,
Bernhard
Code: Alles auswählen
vereinzel <- function(string)
sapply(1:nchar(string), function(i) substr(string, i, i))
vereinzel("1234567890098765432112345678900987654321")
# bzw
as.integer(vereinzel("1234567890"))
# mit langer Zufallsfolge
test <- paste(sample(0:9, 1000, replace=TRUE), collapse="")
vereinzel(test)
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Text-Datei als Vektor einlesen
Oha, kann es sein, dass du auf meinen inzwischen gelöschten Beitrag geantwortet hast? Ich fand den nicht sehr hilfreich und habe ihn wieder entfernt.