仅选择表中包含特定字符串的表以用作变量你好,
我正在尝试连接一堆由进程迭代生成的表。
这些表的名称都以相同的前缀开头。
我可以轻松连接所有打开的表,但无法找到正确的语法来仅连接具有特定前缀的这些表,而忽略其他表。
有什么建议么?
最好的
塞巴斯蒂安
//The first script to concatenate only tables with 'Pvalue' in the name fails
//But the dtLIst does shows the correct list of tables BUT list them without the 'data table' prefix.
// as a result, the concatenation step does not interpret them as a list of table
clear log();
Names Default To Here( 1 );
try(data table("LogP")<<CLOSE window=""></CLOSE>
回复:仅选择表中包含特定字符串的表作为变量这就成功了!
太感谢了。
最好的,
塞巴斯蒂安回复:仅选择表中包含特定字符串的表作为变量dt 的结构已经改变,所以 contains 需要改为
contains(uppercase(dt<<GET name=""></GET>
回复:仅选择表中包含特定字符串的表作为变量不用道歉! 我一开始可能不太清楚。
无论如何,我们必须接近,但 dtLIst 的构建不起作用。 我尝试使用大写和不使用大写都无济于事
这是运行的日志:
参数应该是访问或评估 'Uppercase' 时的字符,错误参数( dt ), Uppercase/*###*/(dt)
如此接近,却又如此遥远……
这是我当前的代码
clear log();
Names Default To Here( 1 );
try(data table("LogP")<<CLOSE window=""></CLOSE>
回复:仅选择表中包含特定字符串的表作为变量抱歉,我以为你的问题在于构建 dtLIst。问题略有不同。
问题在于向连接平台提供正确的信息。Concatenate Platform 所需输入的结构为
Data Table() << concatenate( data table(), data table()…., Append to first table(1) );
您传递给 Concatenate 的内容是:
Data Table( "LogP" ) << Concatenate( Data Table( {"Pvalues PBS vs PBS", "Pvalues PBS vs 741039", "Pvalues PBS vs 740410", "Pvalues PBS vs 709966", "Pvalues PBS vs 709878", "Pvalues PBS vs 709573", "Pvalues PBS vs 709547", "Pvalues PBS vs 709544"} ), "Append to first table" )
主要问题是您拥有的每个数据表名称都需要更改为数据表(“............”)的格式
这可以通过两个小改变来完成。
首先,更改 dtLIst 的结构。您不仅需要数据表名称,还需要整个结构
For( i = 1, i <= N Table(), i++,
dt = data table(i);
if(contains(uppercase(dt),uppercase(c)),
insert into(dtLIst, dt ))
);
接下来,Concatenate 语句变为
data table("LogP")<<CONCATENATE></CONCATENATE>回复:仅选择表中包含特定字符串的表作为变量嗨吉姆,
感谢您的快速回复。 我试过你修复没有效果。
这是我实现脚本时得到的日志:
dt列表=>
"{"PBS 与 PBS 的 P 值"、"PBS 与 741039 的 P 值"、"PBS 与 740410 的 P 值"、"PBS 与 709966 的 P 值"、"PBS 与 709878 的 P 值"、"PBS 与 709573 的 P 值"、"PBS 与 709547 的 P 值" ,“Pvalues PBS 与 709544”}
在访问或评估“数据表”时无法定位数据表,数据表/*###*/(dtLIst)
在 C:\Users\sburel\Ionis\Neurology Research - Documents\Core\Neuro毒理学\Miscellaneous ResearchActivities\DATABASE ALL CNS DATA\Associated scripts\intermediate and toy scripts\Toy 中的第 19 行,将多个表与特定字符串连接起来nam.jsl“
如果我使用脚本的下一部分,这是我为 dxLIst=> 获得的日志
"{DataTable("LogX"), DataTable("LogP"), DataTable("Pvalues PBS vs PBS"), DataTable("Pvalues PBS vs 741039"), DataTable("Pvalues PBS vs 740410"), DataTable("Pvalues PBS vs 740410") PBS vs 709966"), DataTable("Pvalues PBS vs 709878"), DataTable("Pvalues PBS vs 709573"), DataTable("Pvalues PBS vs 709547"), DataTable("Pvalues PBS vs 709544"), DataTable("NT191209 7-DGE体内小鼠单堆叠")}"
第二个列表连接得很好,但包含了我不想要的表。 第一个列表 (dtLIst) 不包含“数据表 (”xyz”)。
我怀疑我没有使用正确的语法来告诉脚本将第一个列表中的每个项目作为数据表进行评估。
//This script to concatenate only table with 'Pvalue' in the name fails
//But the dtLIst does shows the correct list of tables BUT list them without the 'data table' prefix.
// as a result, the concatenation step does not interpret them as a list of table
clear log();
Names Default To Here( 1 );
try(data table("LogP")<<CLOSE window=""></CLOSE>也许你会看到我的方法的错误:)
谢谢
塞巴斯蒂安
回复:仅选择表中包含特定字符串的表作为变量我看不出有什么本质上的错误......但你可能会遇到大写/小写问题尝试
If(contains(uppercase(dt), uppercase(c),
insert into(dtLIst, dt )
);