read.table函数和stdin

Dan*_*age 5 stdin r

我有一个制表符分隔的文本文件,我试图用该read.table函数加载到R中.脚本的前几行看起来像这样

#!/usr/bin/env Rscript
args <- commandArgs(trailingOnly=TRUE)
data <- read.table(args[1], header=TRUE, sep="\t", quote="")
# process the data
Run Code Online (Sandbox Code Playgroud)

这有效.我最初试图让R从标准输入读取数据,但是没有成功.我的第一个方法......

#!/usr/bin/env Rscript
data <- read.table(stdin(), header=TRUE, sep="\t", quote="")
# process the data
Run Code Online (Sandbox Code Playgroud)

......似乎根本没用.我的第二种方法......

#!/usr/bin/env Rscript
data <- read.table("/dev/stdin", header=TRUE, sep="\t", quote="")
# process the data
Run Code Online (Sandbox Code Playgroud)

...读取数据文件,但(由于某种原因,我不明白)前20行左右被破坏,这是一个大问题(特别是因为这些行包含标题信息).有没有办法read.table从标准输入读取?我错过了一些完全明显的东西吗

Kon*_*lph 9

?stdin 说:

stdin()指的是'控制台',而不是指过程的C级'stdin'.GUI控制台(可能没有活动的'stdin',如果它们可能没有连接到控制台输入)以及嵌入式应用程序中的区别很重要.如果要访问C级文件流'stdin',请使用 file("stdin").

和:

当R从文件中读取脚本时,该文件是"控制台":这是允许内联数据的传统用法......

这是观察到的行为的可能原因.原则上可以 read.table从标准输入 - 但在大多数(几乎所有?)的情况下,你会想要通过标准输入file('stdin').