2011-05-15 54 views
3

這很棘手。 一旦在Mathematica中導出數據的路徑在引號之下,我如何將一個變量作爲路徑的一部分插入?換句話說,我在一個增加VAL的循環中,並希望將MyData導出到VAL.dat。想法?Mathematica:導出到可變路徑

僞代碼: 出口【「〜/文檔/ VAL」,邁德特]

+0

歡迎來到StackOverflow – 2011-05-15 06:54:22

回答

4

如何你的電話號碼轉換爲字符串,並與路徑加入它:

"~/Documents/"<>ToString[VAL] 
+0

很好。它適用於如果您也在val後追加擴展名。我從mathematica開始!謝謝 – PFD 2011-05-15 06:41:52

1

在直接回答你的問題,你可以使用StringReplace

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

「#」 是arbitr被選作佔位符。還可以使用另一個字符或字符串。

+0

該OP指出該數字是在VAL ... – 2011-05-15 09:18:46

13

除了霍華德和Mr.Wizard的答案,我可以說,這將是很好的查找FileNameJoin一個不錯的,系統無關的方式來撰寫路徑字符串和IntegerString,你可以用它來整數轉換爲一個字符串位置固定的數量,使您的文件排序更漂亮:

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

Out[34]= "0032" 

我通常不具備操作系統的兼容性間太大必要(編程主要是爲我自己),所以我一貫的風格會是這樣的

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

如果擴展名不明確,請將「TSV」替換爲所需的文件類型。請注意,我在windows上,它使用反斜槓作爲分隔符。既然這也是轉義字符,它必須用反斜槓本身逃脫;這解釋了雙反斜槓。您似乎在UNIX衍生產品上,所以沒有必要這樣做。這確實顯示FileNameJoin的值自動處理這些細節。

+3

+1 - 我非常贊同使用FileNameJoin,FileNameSplit和朋友的建議。無論您是否爲自己編寫程序,編寫可移植代碼都是必不可少的,因爲您永遠都不知道您的代碼在某些時候會被其他人使用。 – 2011-05-15 13:40:35