PGFplot - 从另一列的哈希值创建一个新列

PGFplot - 从另一列的哈希值创建一个新列

我想计算几列的哈希值并使用将唯一值存储在另一列中pgfplotstable

在我展示的 MWE 中,我仅尝试使用两列X&这种方法Y。我想合并它们(仅连接字符串)并计算哈希值。

不幸的是,这个功能\pgfplotstablegetelem{\pgfplotstablerow}{X}\of\mydata对我来说不起作用。

我收到错误信息:

包 pgfplots 错误:抱歉,表 <inline_table> 中不存在行“2”。

所以这不起作用...有人能帮助我吗?:)

平均能量损失

\documentclass[10pt,a4paper]{article}
\usepackage{pgfplotstable}
\usepackage{xstring}
\pgfplotsset{compat=newest}

\newcommand{\calcHash}[1]{
\noexpand\StrLeft{\pdfmdfivesum{#1}}{3}
}

\pgfplotstableread[]{
X Y
1 a
2 b
5 c
}\mydata

\begin{document}
\pgfplotstablecreatecol[
create col/assign/.code={
    %\pgfplotstablegetelem{\pgfplotstablerow}{X}\of\mydata
    %\pgfmathsetmacro\xValue{\pgfplotsretval}
    %\pgfplotstablegetelem{\pgfplotstablerow}{Y}\of\mydata
    %\pgfmathsetmacro\yValue{\pgfplotsretval}
    \edef\myHash{\noexpand\calcHash{abc}} % I want to replace "abc" with "\xValue\yValue"
    \pgfkeyslet{/pgfplots/table/create col/next content}\myHash
}]{ID}{\mydata}
\pgfplotstablegetrowsof{\mydata}
\pgfmathtruncatemacro\myDataRows{\pgfplotsretval-1}

\pgfplotstabletypeset[string type]{\mydata}
\end{document}

结果

结果

答案1

你可以简单地使用\thisrow{<column>}

\documentclass[10pt,a4paper]{article}
\usepackage{pgfplotstable}
\usepackage{xstring}
\pgfplotsset{compat=newest}

\newcommand{\calcHash}[1]{
\noexpand\StrLeft{\pdfmdfivesum{#1}}{3}
}

\pgfplotstableread[]{
X Y
1 a
2 b
5 c
}\mydata

\begin{document}
\pgfplotstablecreatecol[
  create col/assign/.code={
    \edef\myHash{\pdfmdfivesum{\thisrow{X}\thisrow{Y}}}%
    \pgfkeyslet{/pgfplots/table/create col/next content}\myHash
}]{ID}{\mydata}
\pgfplotstablegetrowsof{\mydata}
\pgfmathtruncatemacro\myDataRows{\pgfplotsretval-1}

\pgfplotstabletypeset[string type]{\mydata}
\end{document}

相关内容