I need to exclude every 0th, 3rd, 6th … row from a table. \pgfmathparse{Mod(#1, 3) == 0}
did not work inside row predicate/.code={}
, it gives following error:
! Package PGF Math Error: Sorry, the operation 'Mod' has not yet been implemented in the floating point unit :-( (in 'Mod(0, 3) == 0').
I have copied following MWE from another question. I want to exclude rows according to their indices, not according to their values.
\documentclass{minimal}
\usepackage{pgfplotstable}
\begin{document}
\pgfplotstableread{
num value
1 2
2 5
1 3
3 2
1 4
2 1
}\data
\pgfplotstabletypeset[row predicate/.code={%
\ifnum\pgfplotstablegetelem{#1}{num}\of{\data}=1\relax
\else\pgfplotstableuserowfalse\fi}]{\data}
\end{document}
Best Answer
If you want to filter every nth row, you can use
\pgfmathparse{int(mod(#1,3))}
(note the lower casem
) and then use\ifnum\pgfmathresult>0\relax
to check whether to use the row or not:If you want to filter by the value of a cell, as in your code sample, you'll need to adjust your code slightly:
The
\pgfplotstablegetelem
macro does not expand to its return value; instead, it writes the return value to a macro called\pgfplotsretval
. If you use that macro in the\ifnum
condition, it works as expected: