MATLAB:表的等行或字符串的等字

MATLAB:表的等行或字符串的等字,matlab,datatable,row,nan,Matlab,Datatable,Row,Nan,我想用不同的字符串制作不同的表格。字符串的长度不同,因此表的行数也不同。我希望合并这些表(在末尾),因此需要我拥有的表具有相同数量的行。我的计划是使用NAN来实现这一点,但没有成功 我这里有我的代码尝试,在我努力的地方,标记为“问题位置”。代码: 对于任意数量的字符串,此延续旨在使行数等于行数,而所有其他字符串都需要填充以匹配最长的字符串。我的计划是使用NAN实现这一目标,但没有成功。此示例的结果应该是这样的: 感谢所有的帮助。 谢谢你我在回答你的问题的基础上建立起来了 下面的逻辑是,我们首先

我想用不同的字符串制作不同的表格。字符串的长度不同,因此表的行数也不同。我希望合并这些表(在末尾),因此需要我拥有的表具有相同数量的行。我的计划是使用NAN来实现这一点,但没有成功

我这里有我的代码尝试,在我努力的地方,标记为“问题位置”。代码:

对于任意数量的字符串,此延续旨在使行数等于行数,而所有其他字符串都需要填充以匹配最长的字符串。我的计划是使用NAN实现这一目标,但没有成功。此示例的结果应该是这样的:

感谢所有的帮助。
谢谢你

我在回答你的问题的基础上建立起来了

下面的逻辑是,我们首先找到最大列的大小(在本例中为14);然后,我们发现需要填充的列的索引(我们知道列是成对的,所以我们可以只考虑每个其他列当这样做);最后,我们迭代需要填充的列,用
填充所述列(NaN相当于字符串),并用
字母填充下一列

s = ["Random info in middle one, "+ ...
           "Random info still continues. ",
           "Random info in middle two. "+ ...
           "Random info still continues. ExtraWord ExtraWord ExtraWord "];

t = table();
d = tokenizedDocument(s);

variableNames = [];
variables = [];
max_column_size = 1;

for n=1:length(d)
 variableNames = [variableNames {sprintf('Tokens for sentence %d',n)} {sprintf('Type for sentence %d',n)}];
 variables = [variables {d(n).tokenDetails.Token} {d(n).tokenDetails.Type}];
 column_size = size(d(n).tokenDetails.Token,1);
 if column_size > max_column_size
    max_column_size = column_size;
 end
end

% Setup anonymous function to determine size of column
f = @(x) size(x,1) < max_column_size;

% Loop over variables to determine which columns need to be padded
indeces_to_pad = find(cell2mat(cellfun(f,variables,'UniformOutput',false)));
indeces_to_pad(2:2:end) = [];

% Loop over the columns to be padded and pad them
for n=1:length(indeces_to_pad)
    index_to_pad = indeces_to_pad(n);
    column_size_diff = max_column_size - length(variables{index_to_pad});
    variables{index_to_pad} = [variables{index_to_pad}; NaN((column_size_diff), 1)];
    variables{index_to_pad+1} = [variables{index_to_pad+1}; categorical(repmat("letters",(column_size_diff), 1))];
end


table(variables{:},'VariableNames',variableNames)
s=[“中间的随机信息,”+。。。
“随机信息仍在继续。”,
“中间两个随机信息。”+。。。
“随机信息仍在继续。ExtraWord ExtraWord”];
t=表();
d=标记化文档;
变量名称=[];
变量=[];
最大列大小=1;
对于n=1:长度(d)
variableNames=[variableNames{sprintf('语句%d',n的标记)}{sprintf('语句%d',n的类型)}];
variables=[变量{d(n).tokenDetails.Token}{d(n).tokenDetails.Type}];
列大小=大小(d(n).tokenDetails.Token,1);
如果列大小>最大列大小
最大列大小=列大小;
结束
结束
%设置匿名函数以确定列的大小
f=@(x)大小(x,1)<最大列大小;
%循环变量以确定哪些列需要填充
indeces_to_pad=find(cell2mat(cellfun(f,变量,'UniformOutput',false));
索引(2:2:结束)=[];
%在要填充的列上循环并填充它们
对于n=1:长度(索引到焊盘)
索引\u到\u pad=索引\u到\u pad(n);
column_size_diff=max_column_size-length(变量{index_to_pad});
变量{index_to_pad}=[变量{index_to_pad};NaN((列大小差异),1)];
变量{index_to_pad+1}=[变量{index_to_pad+1};分类的(repmat(“字母”,“列大小”),1));
结束
表(变量{:}、'VariableNames',VariableNames)
将生成下表:

ans =

  14×4 table

    Tokens for sentence 1    Type for sentence 1    Tokens for sentence 2    Type for sentence 2
    _____________________    ___________________    _____________________    ___________________

         "Random"                letters                 "Random"                letters        
         "info"                  letters                 "info"                  letters        
         "in"                    letters                 "in"                    letters        
         "middle"                letters                 "middle"                letters        
         "one"                   letters                 "two"                   letters        
         ","                     punctuation             "."                     punctuation    
         "Random"                letters                 "Random"                letters        
         "info"                  letters                 "info"                  letters        
         "still"                 letters                 "still"                 letters        
         "continues"             letters                 "continues"             letters        
         "."                     punctuation             "."                     punctuation    
         <missing>               letters                 "ExtraWord"             letters        
         <missing>               letters                 "ExtraWord"             letters        
         <missing>               letters                 "ExtraWord"             letters   
ans=
14×4表
第1句类型的标记第1句类型的标记第2句类型的标记第2句
_____________________    ___________________    _____________________    ___________________
“随机”字母“随机”字母
“信息”字母“信息”字母
“字母”中的“字母”
“中间”字母“中间”字母
“一个”字母“两个”字母
“标点符号”,“标点符号”
“随机”字母“随机”字母
“信息”字母“信息”字母
“仍然”字母“仍然”字母
继续“字母”继续“字母”
“标点符号”
字母“单词外”字母
字母“单词外”字母
字母“单词外”字母

您在这方面做得非常好,如果您有时间的话,这里还有一些其他内容,但级别要低得多。谢谢
ans =

  14×4 table

    Tokens for sentence 1    Type for sentence 1    Tokens for sentence 2    Type for sentence 2
    _____________________    ___________________    _____________________    ___________________

         "Random"                letters                 "Random"                letters        
         "info"                  letters                 "info"                  letters        
         "in"                    letters                 "in"                    letters        
         "middle"                letters                 "middle"                letters        
         "one"                   letters                 "two"                   letters        
         ","                     punctuation             "."                     punctuation    
         "Random"                letters                 "Random"                letters        
         "info"                  letters                 "info"                  letters        
         "still"                 letters                 "still"                 letters        
         "continues"             letters                 "continues"             letters        
         "."                     punctuation             "."                     punctuation    
         <missing>               letters                 "ExtraWord"             letters        
         <missing>               letters                 "ExtraWord"             letters        
         <missing>               letters                 "ExtraWord"             letters