如何在bash中使用“r --eval”?

时间:2016-03-14 21:25:03

标签: r git bash

我想为bash运行R代码from here

git log --format=format:%cd --date=short --shortstat --no-merges master \
  | paste - - - | sort --key 1 | sed '$a\\' \
  | awk --field-separator "\t" '
    $1 != date { print date, ins, del; date = $1; ins = 0; del = 0; }
               { match($2, /([0-9]+) ins/, m); ins += m[1];
                 match($2, /([0-9]+) del/, m); del += m[1]; }' \
  | R --eval '
    library("makeR")
    attach(read.table(textConnection(readLines("stdin"))))
    png("heatmap.png")
    calendarHeat(V1, sapply(pmax(V2, V3), log))'

但我的bash上没有r --eval命令,它说:

  

警告:未知选项'--eval'

我该怎么办?

1 个答案:

答案 0 :(得分:1)

这绝对有效。这是我用你的代码片段制作的一个快速ad-hoc shell脚本:

#!/bin/sh

git log --format=format:%cd --date=short --shortstat --no-merges master | \
  paste - - - | sort --key 1 | sed '$a\\' | \
  awk --field-separator "\t" \
    '$1 != date { print date, ins, del; date = $1; ins = 0; del = 0; }
                { match($2, /([0-9]+) ins/, m); ins += m[1]; 
                  match($2, /([0-9]+) del/, m); del += m[1]; }' | \
  r -lmakeR -e'X <- read.table(textConnection(readLines("stdin"))); \
              png("heatmap.png"); \
              calendarHeat(X$V1, sapply(pmax(X$V2, X$V3), log)); \
              dev.off()'

当在我们的Rblpapi项目的仓库中运行时,会产生下面的图像。

enter image description here

我在这里使用了两个littler功能:-l来加载一个包(这里makeR我必须从其存档中安装,-e ...表示。在R中,我们只会将library(makeR)添加到表达式字符串...