在MATLAB中创建一个空表

3

当我尝试使用以下代码创建表格时:

sz = [4 3];
varTypes = ["double","datetime","string"];
varNames = ["Temperature","Time","Station"];
temps = table('Size',sz,'VariableTypes',varTypes,'VariableNames',varNames)

我得到:

Error using table (line 254) Specify variable types as a cell array of character 
vectors, indicating the type of each variable to be created.

请帮我找到我这里缺少的内容。我正在使用MATLAB R2018a。


它对我来说是有效的;你是否尝试过使用单元数组,就像文档中所述,例如{'double','datetime','string'}等。 - kikon
这对我也不起作用。 - HforHisham
我不知道为什么,它几乎与文档中的示例完全相同,openExample('matlab/SpecifySizeAndVariableTypesExample')。我实际上在网上使用"Try This Example"测试了你的代码。 - kikon
2
你应该阅读2018a文档;在MATLAB命令窗口中键入“doc table”以打开它们。版本历史显示了从2019b到2022a的每个发布中的更改。你可能正在使用尚未添加到2018a的“新”语法。 - Adriaan
2个回答

2
错误信息表明您需要在该语法中使用单引号char向量。(在创建table和双引号string方面有一些不足之处……)。您可以在R2018a中使用cellstr来解决这个问题,方法如下:
sz = [4 3];
varTypes = ["double","datetime","string"];
varNames = ["Temperature","Time","Station"];
temps = table('Size',sz,'VariableTypes',cellstr(varTypes),...
    'VariableNames',cellstr(varNames))

1

18a版本新增了使用'Size'输入的功能。如果您遇到错误或想要在较旧版本的MATLAB上运行解决方案,可以使用自定义函数来根据您想要的默认值填充空表格。此演示可以添加更多的变量类型:

>> temps = emptyTable( 4, varTypes, varNames )
temps =
  4×3 table
    Temperature    Time    Station
    ___________    ____    _______
    NaN            NaT     ""     
    NaN            NaT     ""     
    NaN            NaT     ""     
    NaN            NaT     ""  

这是函数的代码:
function tbl = emptyTable( nRows, varTypes, varNames )
    tbl = table();
    varTypes = cellstr(varTypes); % hande string/char/cellstr input
    for ii = 1:numel(varTypes)
        varName = varNames{ii};
        switch varTypes{ii}
            case 'double'
                tbl.(varName) = NaN(nRows,1);
            case 'datetime'
                tbl.(varName) = NaT(nRows,1);
            case 'string'
                tbl.(varName) = repmat("",nRows,1);
        end
    end
end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接