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 erwartencat
die 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.