Pgfplotstable 在 knitr 内联表中将零转换为--

Pgfplotstable 在 knitr 内联表中将零转换为--

如何将每个 0.0 更改为而--不必引用每个string type或制作整个表格string type?实际表格很长,手动执行会花费太长时间。出于同样的原因,如果表格中没有大量的零,可读性将得到显着改善。

最终表格看起来应该是这样的

Flow            Bibble         Bobble        Gumph
Extant             1              2             3
Intant             --             4             5
My sainted aunt    --             6             7

例如使用下面的 MWE,

\documentclass{article}
\usepackage{pgfplotstable}
\begin{document}
\pgfplotstabletypeset[columns/Flow/.style={string type,column type={l}},ignore chars={\^^M},col sep=&,row sep=\\]{
    <<results='asis',echo=FALSE>>=
        someStuff=read.table(textConnection("
                  Flow,   Bibble ,   Bobble ,   Gumph
                Extant,    1,           2,      3
                Intant,    0.0 ,        4,      5
       My sainted aunt,    0.0,         6,      7),header=F,sep=",")
    print(xtable(someStuff),include.rownames=F,include.colnames=F,hline.after=NULL,only.contents=T)
    @
}
\end{document}

答案1

我不知道这是否适用于 knitr,但其他一般情况可以通过先清空@cell content不需要的条目,然后用所需的结果对空单元格进行后处理来处理。另一个例子可以在根据参数类型调整命令行为

\documentclass{standalone}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.8,%supress warnings
     table/zero to dash/.style={
        preproc cell content/.code={%
             \pgfkeysgetvalue{/pgfplots/table/@unprocessed cell content}\pgfmathresult%
             \pgfmathparse{(\pgfmathresult==0?int(1):int(0))}
             \ifnum\pgfmathresult>0\pgfkeyssetvalue{/pgfplots/table/@cell content}{}\fi
        },
        empty cells with={--}% If empty place --
    }
}

\begin{document}
\pgfplotstabletypeset[columns={Flow,Bibble,Bobble,Gumph},% declare column names
columns/Flow/.style={string type,column type={l}},
columns/Bibble/.style={
    zero to dash,
},
col sep=comma
]{
Flow,          Bibble,  Bobble, Gumph
Extant,            1 ,       2,      3
Intant,          0.0 ,       4,      5
My sainted aunt, 0.0 ,       6,      7
}
\end{document}

在此处输入图片描述

相关内容