Экспорт таблицы в CSV без запятых - PullRequest
6 голосов
/ 29 ноября 2011

У меня есть функция f[a]. Я запускаю его через Table, чтобы создать огромный список значений для последующего использования в программе на C в качестве справочной таблицы. Я хочу экспортировать это в CSV, чтобы я мог скопировать / вставить его в мой редактор кода и быстро превратить его в массив C (все, что мне нужно сделать, это обернуть его в фигурные скобки и дать ему имя):

Export["myfile.csv", Table[ f[a], {a, 0, 6} ], "CSV" ];

То, что я хочу, это:

0, 1, 2, 3, 4, 5, 6

и так далее, но я получаю следующее:

0
1
2
3
4
5
6

Каждая запись находится на новой строке. Какую простую, очевидную вещь я пропустил?

Спасибо!

Ответы [ 4 ]

12 голосов
/ 29 ноября 2011

Вы можете экспортировать, используя более общий формат "Таблица" и указать разделители строк. Например:

Export["myfile.csv", Table[f[a], {a, 0, 6}], "Table", "LineSeparators" -> ", "]

FilePrint["myfile.csv"]
(* Returns: 
f[0], f[1], f[2], f[3], f[4], f[5], f[6]
*)

Возможно, вам также потребуется указать параметр "FieldSeparators", по умолчанию для формата "Table" установлено "\t".

6 голосов
/ 29 ноября 2011

Если ваш объект экспорта представляет собой один список, вы можете избежать изменения его элементов и просто обернуть его в List:

Export["myfile.csv", List @ Table[f[a], {a, 0, 6}]]
4 голосов
/ 29 ноября 2011

Это должно делать то, что вы хотите:

Export["myfile.csv", Transpose@Table[{f@a}, {a, 0, 6}], "CSV"]

Ваш подход приведет к появлению вектора столбца, в результате чего каждая строка будет записана на новой строке. Создание таблицы в виде вектора строки решает эту проблему. В этом случае каждый столбец отделяется запятой.


Создание списка списков кажется хитрым способом сделать это, но так или иначе Mathematica относится к нему внутренне. Если вы импортируете файл CSV из своего кода в вопросе:

Import["myfile.csv"]
Out[1]={{0}, {1}, {2}, {3}, {4}, {5}, {6}}

вы видите, что Mathematica автоматически вставляет каждый элемент в список. Так что его нужно будет поместить в список, таким образом или как ответ Mr.Wizard .

3 голосов
/ 29 ноября 2011

Как насчет использования Partition?

f[x_] = Sin[x/10.];

Export["C:\\Users\\Sjoerd\\Desktop\\myfile.csv",
       Partition[Table[f[a], {a, 0, 600}], 30], 
       "CSV"
];

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...