我想在(R)脚本中使用fread
,通过linuxpipe道机制获取input数据。 下面是否有fread
模拟?
read.csv(file = 'stdin', ...)
我也会解决阅读stdin
一些其他的方式,然后用fread
来parsing它,因为我主要想要这个fread
的高级分隔符和标题逻辑。
结果如下:
fread('file:///dev/stdin')
这是有效的,因为当前7个字符是“file://”或“http://”, fread
实际上创建了一个临时文件,并使用download.file
将数据复制到那里。
更新:从版本1.8.11开始,可以在fread
使用shell命令,使得另一个解决方案成为可能:
fread('cat /dev/stdin')
所有read.*
函数都在其引擎下使用“扫描”。 scan
是相当低的水平,但是具有将数据线分析成不同类的能力。
> mat <- matrix(scan(), 4,4) # will paste in block of data 1: 0.5 0.1428571 0.25 4: 0.5 0.1428571 0.25 7: 0.5 0.1428571 0.25 10: 0.5 0.1428571 0.25 13: 0.5 0.1428571 0.25 16: 0.5 17: # Terminate with two <cr>'s Read 16 items > mat [,1] [,2] [,3] [,4] [1,] 0.5000000 0.1428571 0.2500000 0.5000000 [2,] 0.1428571 0.2500000 0.5000000 0.1428571 [3,] 0.2500000 0.5000000 0.1428571 0.2500000 [4,] 0.5000000 0.1428571 0.2500000 0.5000000 > lst <- scan(what=list(double(0), "a")) 1: 4 t 2: 6 h 3: 8 l 4: 8 8 5: Read 4 records > lst [[1]] [1] 4 6 8 8 [[2]] [1] "t" "h" "l" "8"
你也应该看看?connections
页面。