假设我有一个包含元素的长表
% table with distinct elements for A1. A2 is sometimes an integer and
% sometimes -1000
T A1 A2
0 182 181
1 182 180
2 181 180
3 45 -1000
4 29 -1000
另外,我有一个数组,它指定了-1000(在A2中(需要出现的不同顺序。
% array specifies whether A2 should have -1000
[True False True False False]
所以对于上面的例子,期望的输出是:
T A1 A2
0 45 -1000 % array is true and first time -1000 appears
1 182 181 % array above is false
2 29 -1000 % second time -1000 appears
3 182 180
4 181 180
有什么有效的方法吗?我们将非常感谢您的帮助!
这将是一种方法:
- 获取
A2 == -1000
所在行的索引,我们将其称为neg
(表示负数( - 获取表的副本(
tblOld
(,因为我们将在两个步骤中覆盖原始表,并且需要在第二步中引用它 -
- 用
neg
行覆盖索引数组中的true
行 - 用其他行覆盖索引数组中的
false
行
- 用
idx = [true false true false false];
neg = (tbl.A2 == -1000);
tblOld = tbl;
tbl( idx, 2:3 ) = tblOld( neg, 2:3 );
tbl( ~idx, 2:3 ) = tblOld( ~neg, 2:3 );
输出:
tbl =
5×3 table
T A1 A2
_ ___ _____
0 45 -1000
1 182 181
2 29 -1000
3 182 180
4 181 180