展开行选择我想选择一组特定的行,这些行围绕着我容易识别的行。在下面的例子中,我能够捕获感兴趣的行,现在我需要将其向上扩展 11 行,向下扩展 15 行,以获得感兴趣的数据块。
Current Data Table() << Select where( Contains( As Column(2), "1st Thickness" );
自动化和脚本回复:扩展行选择你好,你可以使用
dt = current data table();
block of interest = (dt << get selected rows()) + -11::15;
dt << Select Rows( block of interest )
回复:扩展行选择不要使用 Select Where,而要使用 Get Rows Where
它将返回具有第一个厚度值的行的行号,
然后使用 Select Rows() 选择上面的 11 行和下面的 15 行
回复:扩展行选择霍吉
看起来很有趣,但给了我一个错误“访问或评估‘索引’时的索引参数,...............................”
谢谢
回复:扩展行选择@hogi 的方法是正确的。语法不正确。
这是我的方法
dt = current data table();
block of interest = (dt << get selected rows())[1];
block of interest = index(block of interest-11,block of interest+15);
dt << Select Rows( block of interest );
我建议您稍微改变一下您的范式,不要指望获得只需剪切并粘贴到脚本中的代码,而是研究所提供的代码,然后根据它提供的新见解将其融入到您的代码中。
回复:扩展行选择还有一些建议
Names Default To Here(1);
dt = Current Data Table();
Try(
r = (dt << get selected rows())[1];
dt << Select Where(r - 11 <= Row() <= r + 15);
);
Names Default To Here(1);
below = 11;
above = 15;
dt = Current Data Table();
r = dt << Get Selected Rows();
If(N Items(r) != 1,
Throw("Incorrect amount of rows selected");
);
rows_of_interest = Max(1, r - below)::Min(N Rows(dt), r + above);
dt << Select Rows(rows_of_interest);
Write();
回复:扩展行选择吉姆
这行得通,但它只会选择矩阵中第一个选定行的附加行。我想我应该为每个初始选定的行号设置一个迭代来捕获所有行?
回复:扩展行选择吉姆
我添加了迭代并且似乎得到了我想要的结果。
谢谢
dt = current data table();
Current Data Table() << Select where( Contains( As Column(2), "1st Thickness" ));
sel_rows = Current Data Table() << Get Rows where( Contains( As Column(2), "1st Thickness" ));
j=1;
For( i = 1, i <= N Items( sel_rows ), i++,
block_of_interest = (dt << get selected rows())[j];
block_of_interest = index(block_of_interest-11,block_of_interest+15);
dt << Select Rows( block_of_interest );
j=j+27;
);
回复:扩展行选择从您最初的信息来看,您似乎只想基于单行进行选择。循环绝对是最简单的选择,而且根据您的数据,它可能不需要任何优化就足够快。
Names Default To Here(1);
dt = Current Data Table();
selrows = dt << get selected rows();
For Each({r}, selrows,
dt << Select Where(r - 11 <= Row() <= r + 15, current selection("extend"));
);
wait(0);
还有更复杂的选项
Names Default To Here(1);
dt = Current Data Table();
selrows = dt << get selected rows();
rows_of_interest = {[]};
For Each({r}, selrows,
rs = Max(1, r - 11)::Min(N Rows(dt), r + 15);
Insert Into(rows_of_interest, rs`);
);
Substitute Into(rows_of_interest, Expr(List), Expr(V Concat));
dt << select rows(rows_of_interest);
wait(0);