%3F.png)
Na linguagem de programação estatísticaR
, existem duas formas diferentes para representar dados. Oforma amplaparece com o seguinte:
subject time age weight height
1 John Smith 1 33 90 1.87
2 Mary Smith 1 NA 55 1.54
Oforma longaparece com o seguinte:
subject variable value
1 John Smith time 1.00
2 Mary Smith time 1.00
3 John Smith age 33.00
4 Mary Smith age NA
5 John Smith weight 90.00
6 Mary Smith weight 55.00
7 John Smith height 1.87
8 Mary Smith height 1.54
Fonte do exemplo: Hadley Wickham'spapel. Mas observe que mudei o peso de Mary para 55, onde antes era NA.
É possível ler um arquivo de texto em formato longo e traçar, por exemplo, a altura em relação ao peso?
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}
% the following code doesn't work, but communicates the idea
% of what I want to work
\addplot [x variable=height,y variable=weight] {input.txt};
\end{axis}
\end{tikzpicture}
\end{document}
A razão pela qual estou fazendo esta pergunta é porque quero traçar a saída de um programa de simulação de computador que escrevi, e é mais fácil produzir em formato longo do que em formato amplo. Atualmente, utilizo um R
script convert.R
para ler o arquivo de texto in.txt
em formato longo e convertê-lo em um arquivo de texto out.txt
em formato amplo, quepgfplotspode ler. Seria mais conveniente se de alguma forma o pgfplots pudesse ler e processar in.txt
diretamente, sem exigir que eu o executasse convert.R
manualmente.
Responder1
[convertido do meu comentário]:
pgfplotstable
vem sem suporte para o "formato longo". Se você deseja algum script de conversão que seja independente de R, você pode considerar escrever um script TeX (baseado na pgfplotstable
programação básica do TeX) ou talvez um script LUA. Ou você invoca seu R
script via shell escape ou via\addplot shell