La documentation Scilab pour csvRead indique qu'il est possible à la fois de spécifier une plage (de ligne, col à ligne, col) et le nombre de lignes d'en-tête à ignorer. Cependant, je peux seulement sembler faire un à la fois.Est-il possible de spécifier à la fois la plage et l'en-tête dans csvRead de Scilab?
C'est ce que je fais (basé sur l'un des exemples de la documentation, en utilisant Scilab 5.5.0). Tout d'abord, créez un fichier CSV à relire:
CSV = ["1,0,0,0,0";
"0,1,0,0,0";
"0,0,1,0,0";
"4,4,1,2,0";
"4,63,1,2,0";
"4,63,1,4,233";
"42,3,23,2,23";
];
filename = fullfile(TMPDIR , 'foo.csv');
mputl(CSV, filename);
Maintenant, relire les données de la ligne 2, colonne 1 à la ligne 5, col 4:
csvRead(filename, [], [], "double", [], [], [2 1 5 4])
Cela donne le résultat
ans =
0. 1. 0. 0.
0. 0. 1. 0.
4. 4. 1. 2.
4. 63. 1. 2.
Supposons maintenant que je souhaite ignorer la première ligne de mon fichier CSV (il peut contenir des informations d'en-tête sans importance). Je voudrais écrire:
csvRead(filename, [], [], "double", [], [], [], 1)
Ce qui donne le résultat
ans =
0. 1. 0. 0. 0.
0. 0. 1. 0. 0.
4. 4. 1. 2. 0.
4. 63. 1. 2. 0.
4. 63. 1. 4. 233.
42. 3. 23. 2. 23.
Tout bien jusqu'à présent. Si je veux sauter la première ligne et seulement une partie de stockage de la matrice, je suppose que je pourrais écrire:
csvRead(filename, [], [], "double", [], [], [2 1 5 4], 1)
Mais cela donne la même réponse que précédemment, à savoir que la ligne d'en-tête est supprimé et la plage est ignorée :
ans =
0. 1. 0. 0. 0.
0. 0. 1. 0. 0.
4. 4. 1. 2. 0.
4. 63. 1. 2. 0.
4. 63. 1. 4. 233.
42. 3. 23. 2. 23.
Est-il possible de spécifier à la fois une plage et un en-tête? Je ne fais que bricoler avec Scilab, il manque peut-être quelque chose d'évident.
J'allais ajouter ceci sur le tracker Scilab mais vous (je présume!) Me battre, merci pour la confirmation. – ClickyKeys