代码之家  ›  专栏  ›  技术社区  ›  user36800

matlab'outerjoin':如何为键指定'rownames'`

  •  1
  • user36800  · 技术社区  · 6 年前

    Matlab的文档 outerjoin 说“行标签”可以用于 Keys . 它不提供synatx。我的尝试没有成功:

    >> A=table([1;2],'VariableNames',{'Av1'},'RowNames',{'hot','dog'})
    A = 
               Av1
               ___
        hot    1  
        dog    2  
    
    >> B=table([3;4],'VariableNames',{'Bv1'},'RowNames',{'hot','dog'})
    B = 
               Bv1
               ___
        hot    3  
        dog    4  
    
    >> outerjoin(A,B)
    Error using table/outerjoin (line 114)
    Cannot find a common table variable to use as a key variable. 
    
    >> outerjoin(A,B,'Keys','RowNames')
    Error using table/outerjoin (line 114)
    Unrecognized variable name 'RowNames'. 
    

    我想知道如何解释文档。任何帮助都将不胜感激。

    后注

    似乎文档丢失的不仅仅是如何 指定 RowNames 对于 钥匙 . 它也没有描述默认值 钥匙。从测试来看,它的默认键似乎是匹配的列 姓名:

    A=array2table( [ 1 1 10; 1 2 20; 2 1 1; 2 2 20],...
       'VariableNames',{'k1','k2','d'} )
    B=array2table( [ 1 1 100; 1 2 200; 2 1 1; 2 2 200],...
       'VariableNames',{'k1','k2','d'} )
    outerjoin(A,B,'MergeKeys',true)
    
    A = 
        k1    k2    d 
        __    __    __
        1     1     10
        1     2     20
        2     1      1
        2     2     20
    B = 
        k1    k2     d 
        __    __    ___
        1     1     100
        1     2     200
        2     1       1
        2     2     200
    ans = 
        k1    k2     d 
        __    __    ___
        1     1      10
        1     1     100
        1     2      20
        1     2     200
        2     1       1
        2     2      20
        2     2     200
    
    A=array2table( [ 1 1 10; 1 2 20; 2 1 1; 2 2 20],...
       'VariableNames',{'k1','k2','d'} )
    B=array2table( [ 1 1 100; 1 2 200; 2 1 1; 2 2 200],...
       'VariableNames',{'k1','k2','e'} )
    outerjoin(A,B,'MergeKeys',true)
    
    A = 
        k1    k2    d 
        __    __    __
        1     1     10
        1     2     20
        2     1      1
        2     2     20
    B = 
        k1    k2     e 
        __    __    ___
        1     1     100
        1     2     200
        2     1       1
        2     2     200
    ans = 
        k1    k2    d      e 
        __    __    __    ___
        1     1     10    100
        1     2     20    200
        2     1      1      1
        2     2     20    200
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   user36800    6 年前

    TMW通过引用在线文档提供了答案。” Use Row Labels as Grouping or Key Variables “。桌子的 RowNames 将用作 Keys 参数如果关键字 Row 已指定。 指的是第一个维度的名称,而不是实际字段。

    上述解决方案仅适用于r2016 b之后的车辆。早期版本的解决方案是复制 行名 到一个实际字段,然后使用该字段 钥匙 争论。