3

私はたくさんのファイルを持っています。それぞれにデータが含まれています。1 つのファイルを Mathematica にインポートできます。しかし、500 以上の数のファイルがあります。私はそうします:

 Import["~/math/third_ks/mixed_matrices/1.dat", "Table"];
 aaaa = %
  (*OUTPUT  - some data, I can access them!*)

私が望むのは円を作ることだけです(私はそれを行うことができます)が、ファイルの名前を変更することはできません - 1.dat. 変えたい。

私はそのような解決策を作ろうとしました。可能な名前の一部を生成し、それらを別のファイルに書きました。

Import["~/math/third_ks/mixed_matrices/generate_name_of_files.dat", "Table"];
aaaa = %

出力: {{"~/math/third_ks/mixed_matrices/0.dat"}, \
{"~/math/third_ks/mixed_matrices/1.dat"}, ......

私がやりたいことはすべてTable[a=Import[aaaa[[i]] ,{i,1,500}]

しかし、この関数は" " オブジェクトImportのみをファイル名/パスとして受け入れ ます。String

4

3 に答える 3

4

FileNames通常のワイルドカードを使用して、インポートするデータ ファイルの名前を収集するために使用できます。

そして、Importステートメントをファイル名のリストにマップするだけです。

data次に、各ファイルのデータを個別の要素として含むリストが含まれます。

data = Import[#,"Table"]& /@ FileNames["~/math/third_ks/mixed_matrices/*.dat"];
于 2012-04-28T09:37:22.583 に答える
2

ファイル名のファイルがないと、何が起こっているのかを理解するのは少し難しいです。Flattenただし、ファイル名のリストを使用して、Stringに渡すことができるオブジェクトのベクトルにすることで、問題を解決できると思いますImport。現在、あなたのリストは n*1 行列で、各行はs のベクトルではなくListを含んでいます。StringString

ちなみに、この場合の代わりにMap( ) を使用できます。/@Table

于 2012-04-28T09:15:33.547 に答える
0

ご回答ありがとうございます。
たまたま、同時に2つのソリューションを取得しました。
2番目の方法を忘れるのは公平ではないと思います。

    aaaa = "~/math/third_ks/mixed_matrices/" <> ToString[#] <> ".dat" & /@  Range[0, 116];
   (*This thing generates list of lines  
     Output:
       {"~/math/third_ks/mixed_matrices/0.dat", \
        "~/math/third_ks/mixed_matrices/1.dat", \
        "~/math/third_ks/mixed_matrices/2.dat",    .....etc, until 116

    Table[Import[aaaa[[i]], "Table"], {i, 1, 117}];
    (*and it just imports data from file*)

    bbbb = %;  (*here we have all data, voila!*)

ちなみに、それは私の解決策ではありません。それは私の友人の一人によって想定されていました: https://stackoverflow.com/users/1243244/light-keeper

于 2012-04-28T20:47:36.817 に答える