В GAMS версии 33.2.0 я заменяю точки с запятой на запятые в csv-файле 'file.csv', потому что GAMS требует использования запятых в качестве разделителей. Затем я хочу передать содержимое csv-файла в таблицу в GAMS, а затем сохранить его в gdx-файле. Когда я запускаю приведенный ниже код, точки с запятой успешно заменяются запятыми, но, несмотря на это, GAMS не может составить из них таблицу. Я получаю ошибку 326: за оператором пустой таблицы не следует законный оператор, и ошибка возникает, когда первая запятая встречается в csv-файле 'file_temp.csv'. Почему GAMS не распознает запятую как разделитель?
Файл file.csv содержит:
;col1;col2;col3
row1;1;2;3
row5;4;5;6
row3;7;8;9
row4;10;11;12
Мой код:
Sets
column /col1, col2, col3/
row /row1, row2, row3/;
$onempty
$call "tr ; , <file.csv > file_temp.csv"
Table tab(row,column)
$ondelim
$include file_temp.csv
$offdelim
;
$offempty
execute_unload 'tab.gdx'
tr ; ,
совпадает с командойtr
, за которой следует команда,
, потому что;
является разделителем команд. Попробуйтеtr \; , <file.csv > file_temp.csv
илиtr ';' , <file.csv > file_temp.csv
, чтобы избежать проблемы. - person MemReflect   schedule 06.02.2021row4
иrow5
в вашем наборе (или отсутствиеrow2
в вашем CSV-файле) может быть проблемой. Возможно, тот, кто знаком с программой, сможет больше помочь. - person MemReflect   schedule 07.02.2021