Mathematica: экспорт в переменный путь - PullRequest
3 голосов
/ 15 мая 2011

это сложно.Когда путь для экспорта данных в Mathematica указан в кавычках, как я могу вставить переменную как часть пути?Другими словами, я в цикле, который увеличивает VAL и хочу экспортировать MyData в VAL.dat.Идеи?

Псевдокод: Экспорт ["~ / Documents / VAL", MyData]

Ответы [ 3 ]

13 голосов
/ 15 мая 2011

В дополнение к ответам Говарда и Мистера Уизарда я могу сказать, что было бы неплохо найти FileNameJoin для красивого, независимого от системы способа составления строк пути и IntegerString, который вы могли бы использовать для преобразования целых чисел в строки с фиксированным количеством позиций, что делает ваши файлы более удобными для сортировки:

In[33]:= VAL = 32;
IntegerString[VAL, 10, 4]

Out[34]= "0032"

Мне обычно не очень нужна совместимость между ОС (программирование в основном для меня), поэтому мой обычный стиль будет выглядеть примерно так:

Export["directoryPart\\FixedFileNamePart"<>IntegerString[VAL, 10, 4]<>".dat","TSV"]

Замените "TSV" на тип файла, который вам нужен, если это не ясно из расширения. Обратите внимание, что я нахожусь на окнах, которые используют обратную косую черту в качестве разделителя. Поскольку это также символ экранирования, его необходимо экранировать с помощью обратной косой черты; это объясняет двойной обратный слеш. Похоже, вы работаете с UNIX, поэтому в этом нет необходимости. Это показывает значение FileNameJoin, которое автоматически обрабатывает эти детали.

4 голосов
/ 15 мая 2011

Как насчет преобразования вашего числа в строку и соединения с путем:

"~/Documents/"<>ToString[VAL]
1 голос
/ 15 мая 2011

В прямом ответе на ваш вопрос вы можете использовать StringReplace:

Table[
  StringReplace[
     "~/Documents/#.dat", 
     "#" :> IntegerString[VAL, 10, 4]],
  {VAL, 27, 29}
]
<b>   {"~/Documents/0027.dat", "~/Documents/0028.dat", "~/Documents/0029.dat"}</b>

"#" был произвольно выбран в качестве заполнителя.Также можно использовать другой символ или строку символов.

...