僅選擇表中包含特定字符串的表用作變量你好,
我正在嘗試連接一堆由進程迭代生成的表。
這些表的名稱都以相同的前綴開頭。
我可以很容易地連接所有打開的表,但我無法找到正確的語法來僅連接具有特定前綴的那些表,而不要管其他表。
有什麼建議麼?
最好的
塞巴斯蒂安
//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' 中的字符,Bad Argument( 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" )
主要問題是您擁有的每個數據表名稱都需要更改為 Data Table( "........" ) 的格式
這可以通過兩個小的更改來完成。
首先,更改 dtLIst 的結構。你要的不只是數據表名,而是整個結構
For( i = 1, i <= N Table(), i++,
dt = data table(i);
if(contains(uppercase(dt),uppercase(c)),
insert into(dtLIst, dt ))
);
接下來,連接語句變為
data table("LogP")<<CONCATENATE></CONCATENATE>回复:僅選擇表中包含特定字符串的表用作變量嗨,吉姆,
感謝您的快速回复。 我試過你修復無濟於事。
這是我執行腳本時得到的日誌:
dtList =>
“{“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"}
無法在“數據表”的訪問或評估中找到數據表,數據表/*###*/(dtLIst)
在 C:\Users\sburel\Ionis\Neurology Research - Documents\Core\Neurotoxicology\Miscellaneous Research Activities\DATABASE ALL CNS DATA\Associated scripts\intermediate and toy scripts\Toy example 中的第 19 行連接多個表與特定字符串南.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 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 )
);