Я заинтересован в записи нескольких векторов в файл так, чтобы каждый вектор формировал одну строку в файле и записывался в файл, как только он был сгенерирован. Элементы вектора должны быть разделены одним пробелом, и я не хочу включать { }
круглые скобки для вектора. По сути, я хочу имитировать fprintf("file", "%f %f %f\n")
функциональность C.
Вот что у меня есть. Есть ли лучший способ сделать это?
st1 = OpenWrite["C:\\junk\\mu.out", FormatType -> OutputForm];
vt = Table[
v = RandomReal[{0, 1}, 5];
For[j = 1, j <= Length[v], j++,
WriteString[
st1,
SequenceForm[NumberForm[v[[j]], ExponentFunction -> (Null &)],
" "]
]
];
Write[st1, ""];
v,
{200}
];
In[3]:= Close[st1]
Out[3]= "C:\\junk\\mu.out"
Основываясь на замечательной функции Riffle, любезно предоставленной Арноудом и мистером Волшебником, я изменил ее следующим образом:
WriteVector[stream_, vector_] :=
Apply[WriteString[stream, ##, "\n"] &,
Riffle[Map[NumberForm[#, ExponentFunction -> (Null &)] &, vector],
" "]
]