在以下玩具示例中,表t1
和t2
分别具有形状(3 x 0)和(3 x 1)。此外,两个表都具有相同的行名称。
>> t1 = table('RowNames', {'a', 'b', 'c'});
>> t2 = table([3 ; 2 ; 1], ...
'RowNames', {'c', 'a', 'b'}, 'VariableNames', {'x'});
然后将t2
的单个列的副本作为新列添加到t1
,并使用相同的变量名称。
>> t1.('x') = t2.('x');
但是,结果表t1
与行名称与t2
- 列中的值之间的关联中的x
不同:
>> t1({'a', 'b', 'c'}, :)
ans =
x
_
a 3
b 2
c 1
>> t2({'a', 'b', 'c'}, :)
ans =
x
_
a 2
b 1
c 3
将t2.('x')
分配给t1.('x')
"尊重rownames&#34 ;?的最简单方法是什么?根据最后一个条件,我的意思是最终t1
应该看起来像t2
; e.g:
>> t1({'a', 'b', 'c'}, :)
ans =
x
_
a 2
b 1
c 3
答案 0 :(得分:1)
您可以使用行名称对表进行索引,因此如果从locationRequest = LocationRequest.create();
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationRequest.setExpirationDuration(MAX_DURATION_SEC);
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,locationRequest, this);
中提取列表名称,则可以将其用作t1
的排序:
t2
或者只需一次性完成:
order = t1.Properties.RowNames % cell array
intermediate = t2(order, :);
答案 1 :(得分:1)
由于t1
没有x
列,您可以将t1
与x
的{{1}}列{/ 1}连接起来
t2
它会自动处理匹配的行。
答案 2 :(得分:0)
好的,这是OP。
我找到了一个(潜在的)我的问题答案:而不是
t1.('x') = t2.('x');
使用
t1.('x') = t2{t1.Properties.RowNames, 'x'};
我说这是一个"潜力"回答是因为使用MATLAB我永远都不知道什么时候适用于特定类型或特定情况的东西会一概而论。例如,此时我不知道如果列x
包含非数字值,上述内容是否有效。
如果有人知道更好的方法,或者可以指出支持我的幸运猜测的文档,请发布。我很乐意接受它作为答案。