6

テーブル「mydata1」からCSV形式のデータを「file1.dat」にエクスポートしています。以下は数学コードです:

mydata1=TableForm[Flatten[
Table[Table[Table[
                 {xcord, ycord, zcord}, {xcord, 0,50,10}],
                   {ycord,0,50,10}], {zcord, 50, 100, 10}], 2]];

Export["file1.dat",mydata1,"CSV"]

これで、私の「file1.dat」は次のようになります。

0,0,50
10,0,50
20,0,50
..
.. and so on

これで、テーブル「mydata2」(以下のコード)から別のデータセットができました。このテーブル「mydata2」のデータを同じファイル「file1.dat」に保存できるようにしたいのですが、その前に次のことを行う必要があります。ファイル「file1.dat」にテキストを書き込みます。たとえば、「以下のデータはmydata2からのものです」。

両方のテーブルの両方のデータをCSV形式でエクスポートする必要があることに注意してください。

mycounter=20
mydata2=TableForm[Flatten[
Table[Table[Table[
                 {++mycounter,xcord, ycord, zcord}, {xcord, 0,50,10}],
                   {ycord,0,50,10}], {zcord, 50, 100, 10}], 2]];

最終的に、私のデータファイル「file1.dat」は次のようになります。

*Data from data from mydata1
0,0,50
10,0,50
20,0,50
... and so on
*Below data from mydata2
21,0,0,50
22,10,0,50
23,20,0,50
... and so on.

最終的なデータファイル「file1.dat」を観察すると、「mydata1」のデータの下にテーブル「mydata2」のデータがあり、その間にテキストが書き込まれているはずです。

注:拡張子がTXTで、CSV形式でデータをエクスポートします。例:

Export["file1.txt", mydata1, "CSV"]

「PutAppend」を使用しましたが、期待した結果が得られませんでした。適切に使用していないか、私の種類の問題のキーワードではない可能性があります。

エクスポートについては多くの質問がありますが、皆さんを混乱させたくないので、今はすべてを尋ねることはしません。

4

2 に答える 2

12

ストリームはこの目的に役立ちます。あなたの目標が異なる時間に生成することである場合、あなたは以下を行うことができますmydata1mydata2まず、以下を含むファイルを作成しましょうmydata1

$stream = OpenWrite["file.dat", BinaryFormat -> True];
WriteString[$stream, "*Data from data from mydata1\n"]
Export[$stream, mydata1, "CSV"]
WriteString[$stream, "\n"]
Close[$stream]

次を使用してファイルの内容を確認できますImport

In[10]:= Import["file.dat", "Text"]

Out[10]= *Data from data from mydata1
         0,0,50
         10,0,50
         20,0,50
         ...

mydata2それでは、ファイルの最後に追加しましょう。

$stream = OpenAppend["file.dat", BinaryFormat -> True];
WriteString[$stream, "*Below data from mydata2\n"]
Export[$stream, mydata2, "CSV"]
WriteString[$stream, "\n"]
Close[$stream]

...そしてもう一度確認します:

In[20]:= Import["file.dat", "Text"]

Out[20]= *Data from data from mydata1
         0,0,50
         10,0,50
         20,0,50
         ...
         *Below data from mydata2
         21,0,0,50
         22,10,0,50
         23,20,0,50
         ...

必要に応じて、ファイルへの書き込みmydata1と書き込みを同時に行うこともできます。mydata2

$stream = OpenWrite["file.dat", BinaryFormat -> True];
WriteString[$stream, "*Data from data from mydata1\n"]
Export[$stream, mydata1, "CSV"]
WriteString[$stream, "\n*Below data from mydata2\n"]
Export[$stream, mydata2, "CSV"]
WriteString[$stream, "\n"]
Close[$stream]

このBinaryFormat -> Trueオプションは、ストリームを開くたびに使用されることに注意してください。これは、ストリーム書き込み操作による自動改行挿入を無効にするためです。このオプションを省略すると、出力ファイルで望ましくないダブルスペースが発生します。

于 2011-09-14T14:21:32.470 に答える
3

おそらく次のようなものです:

mydata1 = 
  Flatten[Table[Table[Table[
          {xcord, ycord, zcord}, 
          {xcord, 0, 20, 10}], {ycord, 0, 20, 10}], {zcord, 50, 50, 10}], 2];
mycounter = 20
mydata2 = 
  Flatten[Table[Table[Table[
          {++mycounter, xcord, ycord, zcord}, 
          {xcord, 0, 20, 10}], {ycord, 0, 20, 10}], {zcord, 50, 50, 10}], 2];

Export["c:\\test.txt", 
      Join[{"* data1 follows"}, mydata1, {"* data2 follows"}, mydata2], "CSV"]

結果のファイルは次のとおりです。

* data1 follows
0,0,50
10,0,50
20,0,50
0,10,50
10,10,50
20,10,50
0,20,50
10,20,50
20,20,50
* data2 follows
21,0,0,50
22,10,0,50
23,20,0,50
24,0,10,50
25,10,10,50
26,20,10,50
27,0,20,50
28,10,20,50
29,20,20,50
于 2011-09-14T13:21:52.100 に答える