我想计算几列的哈希值并使用将唯一值存储在另一列中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}