Процесс замещения

Я осмотрелся вокруг того, что озадачивает меня, и я нашел только это:Некоторые программы не допускают подстановку процессов для входных файлов?

что частично помогает, но я действительно хотел бы понять всю историю. Я заметил, что некоторые из моих R-сценариев дают разные (то есть неправильные) результаты, когда я использую подстановку процесса.

Я попытался определить проблему с помощью контрольного примера:

Этот скрипт:

#!/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")

с входным файлом, сгенерированным таким образом:

$ for i in `seq 1 10`; do echo $i >> p; done
$ for i in `seq 1 500`; do cat p >> test; done

приводит меня к этому:

$ ./mean.R test
test
5.5

$ ./mean.R <(cat test)
/dev/fd/63
5.501476

Дальнейшие тесты показывают, что некоторые строки потеряны ... но я хотел бы понять, почему. Использует ли read.table (сканирование дает те же результаты) поиск?

Ps. с меньшим тестовым файлом (100) сообщается об ошибке:

$./mean.R <(cat test3)
/dev/fd/63
Error in read.table(file, header = F) : no lines available in input
Execution halted

Добавьте # 1: с измененным сценарием, который использует сканирование, результаты совпадают.

Ответы на вопрос(1)

Ваш ответ на вопрос