【问题标题】:Is it possible to specify both range and header in Scilab's csvRead?是否可以在 Scilab 的 csvRead 中同时指定范围和标题?
【发布时间】:2014-09-11 22:13:02
【问题描述】:

csvRead 的 Scilab 文档表明可以指定范围(从 row,col 到 row,col)和要忽略的标题行数。但是我似乎一次只能做一个。

这就是我正在做的事情(基于文档中的一个示例;使用 Scilab 5.5.0)。首先,创建一个 CSV 文件进行回读:

    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);

现在从第 2 行第 1 列读回数据到第 5 行第 4 列:

    csvRead(filename, [], [], "double", [], [], [2 1 5 4])

这给出了结果

    ans  =

    0.    1.     0.    0.  
    0.    0.     1.    0.  
    4.    4.     1.    2.  
    4.    63.    1.    2.  

现在假设我想跳过 CSV 文件中的第一行(其中可能包含一些不重要的标题信息)。我会写:

    csvRead(filename, [], [], "double", [], [], [], 1)

结果是什么

    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.   

到目前为止一切顺利。如果我想跳过第一行并且只存储矩阵的一部分,我想我可以写:

    csvRead(filename, [], [], "double", [], [], [2 1 5 4], 1)

但这给出了与以前相同的答案,即仅删除了标题行并忽略了范围:

    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.   

是否可以同时指定范围和标题?我只修补 Scilab,所以可能会遗漏一些明显的东西。

【问题讨论】:

    标签: scilab


    【解决方案1】:

    我确定这是 scilab 中的一个错误,因为如果我查看我看到的源代码,如果给出了第 8 个参数(标题),则不会评估第 7 个参数(范围)。 这是一个由错误的比较运算符(== 而不是 >=)引起的简单错误。

    【讨论】:

    • 我打算在 Scilab 问题跟踪器上添加此内容,但您(我想!)击败了我,感谢您的确认。
    猜你喜欢
    • 1970-01-01
    • 2012-11-03
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    • 2016-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多