Matlab `outerjoin`: как указать` RowNames` для `Keys` - PullRequest
0 голосов
/ 06 июня 2018

В документации Matlab для outerjoin сказано, что "метки строк" могут использоваться для Keys.Это не обеспечивает синтаксис для этого.Мои попытки не увенчались успехом:

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

Мне интересно, как интерпретировать документацию.Буду признателен за любую помощь.

AFTERNOTE

Кажется, что в документации отсутствует нечто большее, чем просто указать RowNames для Keys.Это также не описывает ключи по умолчанию.Судя по тестам, ключи по умолчанию - это столбцы с соответствующими именами:

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 Ответ

0 голосов
/ 07 июня 2018

TMW предоставил ответ, сославшись на онлайн-документацию « Использовать метки строк в качестве группирующих или ключевых переменных ».Таблица RowNames будет использоваться в качестве аргумента Keys, если указано ключевое слово Row.Row относится к названию 1-го измерения, а не к фактическому полю.

Приведенное выше решение относится только к R2016b и далее.Решение для более ранних выпусков состоит в том, чтобы скопировать RowNames в фактическое поле, а затем использовать поле для аргумента Keys.

...