R überspringt Zeilen aus / dev / stdin

Ich habe eine Datei mit einer Liste von Nummern (machen Sie es sich selbst:for x in $(seq 10000); do echo $x; done > file).

$> R -q -e "x <- read.csv('file', header=F); summary(x);"

> x <- read.csv('file', header=F); summary(x);
       V1       
 Min.   :    1  
 1st Qu.: 2501  
 Median : 5000  
 Mean   : 5000  
 3rd Qu.: 7500  
 Max.   :10000  
gt; R -q -e "x <- read.csv('file', header=F); summary(x);" > x <- read.csv('file', header=F); summary(x); V1 Min. : 1 1st Qu.: 2501 Median : 5000 Mean : 5000 3rd Qu.: 7500 Max. :10000

Nun könnte man erwartencatdie Datei und lesen aus/dev/stdin die gleiche Ausgabe zu haben, aber es tut nicht:

$> cat file | R -q -e "x <- read.csv('/dev/stdin', header=F); summary(x);"
> x <- read.csv('/dev/stdin', header=F); summary(x);
       V1       
 Min.   :    1  
 1st Qu.: 3281  
 Median : 5520  
 Mean   : 5520  
 3rd Qu.: 7760  
 Max.   :10000 
gt; cat file | R -q -e "x <- read.csv('/dev/stdin', header=F); summary(x);" > x <- read.csv('/dev/stdin', header=F); summary(x); V1 Min. : 1 1st Qu.: 3281 Median : 5520 Mean : 5520 3rd Qu.: 7760 Max. :10000

Verwendentable(x) zeigt, dass ein paar Zeilen übersprungen wurden:

    1  1042  1043  1044  1045  1046  1047  1048  1049  1050  1051  1052  1053 
    1     1     1     1     1     1     1     1     1     1     1     1     1 
 1054  1055  1056  1057  1058  1059  1060  1061  1062  1063  1064  1065  1066 
    1     1     1     1     1     1     1     1     1     1     1     1     1
 ...

Es sieht so aus, als ob R etwas Lustiges machtstdin, da dieser Python alle Zeilen in der Datei korrekt ausgibt:

cat file | python -c 'with open("/dev/stdin") as f: print f.read()'

Diese Frage scheint verwandt zu sein, aber es geht mehr darum, Zeilen in einer fehlerhaften CSV-Datei zu überspringen, während meine Eingabe nur eine Liste von Zahlen ist.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage