首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在R脚本中从管道中读取标准输入?

如何在R脚本中从管道中读取标准输入?
EN

Stack Overflow用户
提问于 2013-08-29 05:14:22
回答 1查看 1.9K关注 0票数 3

我试着绘制了一个蜂群图(http://www.cbs.dtu.dk/~eklund/beeswarm/),现在我想写一个小的R脚本来实现自动化。我想要提供给这个R脚本的输入来自STDIN,并且我在从STDIN读取数据时遇到了问题。

这是我的R脚本:

代码语言:javascript
复制
args <- commandArgs(TRUE)
f1 <- args[1]

plotbeeswarm <- function(output){
    library(beeswarm)
    f <- read.table(stdin(), header=TRUE)
    png(output, width=800, height=800)
    beeswarm(Data ~ Category, data=f, pch=16, pwcol=1+as.numeric(sample), 
             xlab="")
}

plotbeeswarm(f1)

我认为问题是输入文件是如何被读取并处理成f的。有人能帮我修复代码吗?非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2013-08-29 06:35:55

下面是我在littler网页上使用的一个示例,您也应该能够将其应用于Rscript

脚本的代码是:

代码语言:javascript
复制
#!/usr/bin/r -i

fsizes <- as.integer(readLines(file("stdin")))
print(summary(fsizes))
stem(fsizes)

我将来自ls -l的结果输入到中,通过awk进行过滤,只得到一列文件大小:

代码语言:javascript
复制
edd@max:~/svn/littler/examples$ ls -l /bin/ | awk '{print $5}' | ./fsizes.r 
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
      3    6240   30820   61810   60170 2000000       1 

  The decimal point is 5 digit(s) to the right of the |

   0 | 00000000000000000000000000000000000111111111111111111111111122222222+57
   1 | 111112222345679
   2 | 7
   3 | 1
   4 | 1
   5 | 
   6 | 
   7 | 
   8 | 
   9 | 6
  10 | 
  11 | 
  12 | 
  13 | 
  14 | 
  15 | 
  16 | 
  17 | 
  18 | 
  19 | 
  20 | 0

edd@max:~/svn/littler/examples$ 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18498305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档