2017-05-27 3 views
-5

Ich habe eine Textdatei myfile.txt die wie folgt aussieht:Wie liest man eine Textdatei mit Zeilentrennzeichen und speichert sie als numerischen Vektor?

10 
20 
30 
40 

Ich versuche es in R zu laden mit:

nums <- read.csv('myfile.txt', header=FALSE); 

Dies ist jedoch eine Liste zurückgibt. Was ich will, ist das Äquivalent von:

nums <- c(10, 20, 30, 40); 

ich später Code haben, der folgende tut:

v = sprintf("%d", nums); 

Dies funktioniert gut, wenn ich die Vektor-Version, aber wenn ich versuche, meine Daten zu laden von Datei, bekomme ich folgende Fehlermeldung:

Error in sprintf("%d", nums) : unsupported type

Execution halted

+0

'sprintf ("% d", nums $ V1)' sollte funktionieren. 'nums' ist ein Datenrahmen und kein Vektor. Siehe auch '? Sprintf': * Nur logische, Integer-, Real- und Zeichenvektoren werden unterstützt * – Jaap

+2

Tun Sie einfach' nums <-unlist (nums) 'nach dem Einlesen, um es in einen einfachen Vektor zu verwandeln –

+1

In aller Ehrlichkeit, wenn Sie wissen nicht, wie Sie von einem Listenobjekt (das eigentlich ein data.frame ist, aber die Details sind egal) zu einem Vektorobjekt machen, Sie müssen sich wirklich die R-Grundlagen ansehen. PS: 'sprintf' gibt eine Zeichendarstellung zurück. Wenn du sie als Zeichen haben willst, benutze 'as.character' ... –

Antwort

7

Verwendet niemand mehr scan ??

> scan("./myfile.txt") 
Read 4 items 
[1] 10 20 30 4 

Ich habe das vierte Element in der Datei falsch eingegeben. genau

Returns, was Sie wollten:

> n = scan("./myfile.txt") 
Read 4 items 
> identical(n, c(10,20,30,4)) 
[1] TRUE 
3

Wenn Sie read.csv verwenden, sollte der Ausgang ein data.frame sein.

Wenn Sie auf die ganze Zahlenspalte zugreifen möchten, versuchen Sie nums[[1]]. (Mit nums ist der Ausgang read.csv.)

Um in einen Vektor zu konvertieren, verwenden Sie unlist(nums).

Verwandte Themen