Etrafa Kafamı kurcalayan hakkında bir görünüm verilmiş ve sadece bu bulduk: kısmen yardımcı oluyor Do some programs not accept process substitution for input files?Süreç ikamesi
, ama gerçekten tam hikaye anlamak istiyorum. Süreç değiştirmeyi kullandığımda bazı R komut dosyalarının farklı (yani yanlış) sonuçlar verdiğini fark ettim.
Ben bir test vaka ile sorunu kesin olarak belirlemek için çalıştı:Bu komut:
$ for i in `seq 1 10`; do echo $i >> p; done
$ for i in `seq 1 500`; do cat p >> test; done
bu beni götürüyor: Bu şekilde üretilen bir giriş dosyasıyla
#!/usr/bin/Rscript
args <- commandArgs(TRUE)
file <-args[1]
cat(file)
cat("\n")
data <- read.table(file, header=F)
cat(mean(data$V1))
cat("\n")
:
$ ./mean.R test
test
5.5
$ ./mean.R <(cat test)
/dev/fd/63
5.501476
Diğer testler bazı hatların kaybolduğunu gösteriyor ... ama nedenini anlamak isterim. Read.table (tarama aynı sonuçları verir) kullanır mı kullanır?
Ps. Daha küçük bir test dosyası ile (100) bir hata bildirilir:
$./mean.R <(cat test3)
/dev/fd/63
Error in read.table(file, header = F) : no lines available in input
Execution halted
1. ekleyin: Sonuçlar aynıdır tarama kullanan bir modifiye komut dosyası ile.
Bir dosya benim kendi el yazısı bağlantı açma Bu genel amaçlı işlevi yazdım
'read.table', sütun biçimlerini belirlemek için dosyaya göz atabilir ve daha sonra başa geri döndüğünde başarısız olabilir. (Sadece vahşi bir tahmin.) R betiğinizde kedi (head (data $ V1)) '' dırsanız ne olur? – krlmlr
işlem yeniden yönlendirmesi ile '2 3 4 5 6 7', '1 2 3 4 5 6' olsun. Tüm veri çerçevelerini yazdırmak, onsuz 5001 satır (doğru) ve diğer durumda 3050 verir. Ayrıca, aramanın sorun olabileceğini düşünüyorum, ancak ... kısmi verilerle devam etmek yerine bir hata bildirmemeli midir? – vodka
dosyada yukarı ve aşağı gidiyor kesinlikle sorun: https://stat.ethz.ch/pipermail/r-help/2007-September/141769.html ama yine de bir hata bildirilmesi gerektiğini düşünüyorum ve belki de bir böcek doldurun. Hala tarama ile aynı olup olmadığını araştırmak zorundayım (bu bana read.table ile aynı yanlış sonuçları verir). – vodka