微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 GAMS 中用 tr (POSIX) 翻译字符的问题

如何解决在 GAMS 中用 tr (POSIX) 翻译字符的问题

在 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'

解决方法

当我运行您的模型时,我收到域违规错误。问题是,当您的数据中有 row 时,您将 row1,row2,row3 定义为 row5。扩展 row 集后,事情对我有用:

$onEcho > file.csv
;col1;col2;col3
row1;1;2;3
row5;4;5;6
row3;7;8;9
row4;10;11;12
$offEcho

Sets
    column /col1,col2,col3/
    row /row1 * row5/;
$onempty
$call "tr ;,<file.csv > file_temp.csv"
Table tab(row,column)
$ondelim
$include file_temp.csv
$offdelim
;
$offempty
execute_unload 'tab.gdx';

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。