2010-11-18 4 views
0
ret = {}; 
For[i = 1, i <= [email protected], i++, 
    AppendTo[ret, {idNum = x[[i, 1]] , a = x[[i, 2]], b = x[[i, 3]], 
    c = x[[i, 4]], d = x[[i, 5]], e = x[[i, 6]], f = x[[i, 7]], 
    g = DateDifference[{d, e, f}, {currYear, currMonth, currDay}], 
    If[g > 90, Y, N]}];]; 
[email protected] 

Comment puis-je afficher une liste dans un fichier texte qui n'a pas de parenthèses et d'accolades, également besoin d'une nouvelle ligne après chaque ligne.générer une liste dans un fichier mathematica

+1

Ce serait bien si vous pouviez poster un extrait de code de travail .... – Simon

Répondre

2

Vous devez utiliser la commande Export, par exemple pour enregistrer un tableau nxn sous forme de valeurs séparées par des virgules utiliser quelque chose comme:

data = RandomInteger[{0, 256}, {50, 50}] 
Export[NotebookDirectory[] <> "data.csv", data, "CSV"] 

Les formats intégrés sont donnés dans $ExportFormats

+4

[Cette page de guide] (http://reference.wolfram.com/mathematica/guide/ImportingAndExporting.html) a les formats listés par catégorie. –

2

J'aime utiliser Export["ret.m", ret, "Lines"] pour obtenir une entrée par ligne dans le fichier de sortie ret.m. YMMV en fonction de la structure du produit que vous exportez.

1

Tout comme un sidetalk:

La manière habituelle de programmer en Mathematica est fonctionnelle, plutôt que de procédure.

Les variables sont définies uniquement lorsque vous devez inspecter quelque chose ou conserver des résultats pour un travail ultérieur. De plus, les boucles sont déconseillées.

une forme équivalente de votre programme (juste un projet rapide), dans ces lignes peut être quelque chose comme:

x = {{1, a1, b1, c1, 2010, 11, 12}, 
    {1, a2, b2, c2, 2011, 12, 13}}; 
Export["c:\data.csv", #, "CSV"] & 
[Flatten[ 
    {#[[1 ;; 7]], 
    {#, If[# > 90, "Y", "N"]} &@ 
     DateDifference[#[[5 ;; 7]], DateList[][[1 ;; 3]]]} 
    ] & /@ x] 
+0

juste un nit. Les boucles se produisent toujours, après tout 'Map' est une boucle. Mais, les boucles explicitement contrôlées, comme 'For' et' Do', sont déconseillées. Une des raisons est qu'elles nécessitent un codage supplémentaire juste pour configurer, c'est-à-dire que vous devez configurer explicitement vos conditions de début et de fin, mais avec 'Map',' Fold', et 'Nest' aucune référence explicite à la longueur de le 'List' (ou autre' Head') doit être référencé. (Ils travaillent plus dans le sens de 'ForEach' d'autres langues.) De plus, leur signification sémantique est plus claire, c'est-à-dire' Map' cette fonction sur chaque élément de cette 'List'. – rcollyer

+0

@rcollyer N'hésitez pas à mettre à jour votre réponse. C'était juste destiné à ouvrir l'esprit du demandeur à la programmation fonctionnelle. Mais peut-être est tombé court. –

+0

encore un moyen d'aller pour les capacités d'édition. Mais, je ne pense pas qu'il a manqué, juste un peu à l'écart. Je lui ai même donné un +1. Comme il n'a pas écouté la première fois ... – rcollyer