用於從剪貼板列表中選擇列的腳本跟進...仍然有問題。
我需要轉換從行值複製的字符串列表,粘貼到此處時看起來像這樣
Tcea1 Atp6v1h Oprk1 Rb1cc1 Fam150a
當粘貼到腳本窗口中時,它看起來像這樣
Tcea1
Atp6v1h
操作1
銣1cc1
我需要代碼將剪貼板內容轉換為此
{Tcea1、Atp6v1h、Oprk1、Rb1cc1、Fam150a}
這不起作用...... {“Tcea1,Atp6v1h,Oprk1,Rb1cc1,Fam150a”}
但這確實{“Tcea1”,“Atp6v1h”,“Oprk1”,“Rb1cc1”,“Fam150a”}
那麼......我如何更改“獲取剪貼板”命令以生成正確的輸出?或者刪除後續代碼行中的“”?
感謝您的幫助。
2021年6月
這是我的腳本(基於大家的幫助!),效果很好,在本例中選擇數據表中的列“Aasdh,Abca2,Abca7,Abcf1,Abi3”。
我的新問題:當我的剪貼板中有大量列名稱時,我不想鍵入或轉換為按列分隔的名稱,如此處的 t 腳本所示。相反,我希望腳本直接使用剪貼板來選擇數據框中的列。
如何直接在腳本中將剪貼板列表轉換為“Aasdh,Abca2,Abca7,Abcf1,Abi3 ....”?
謝謝!
腳本
//with data table where you want to select the columns now open
Names Default To Here( 1 );
dt = currentdatatable();
// Get list of data column names
col_list = dt << Get Column Names( string );
// User specified column names
cc = {Aasdh,Abca2,Abca7,Abcf1,Abi3};
For( i = 1, i <= N Items( cc ), i++,
If( Contains( col_list, Char( cc[i] ) ),
Column( dt, Char( cc[i] ) ) << Set Selected( 1 )
)
);
高級統計建模自動化和腳本編寫消費者和市場研究內容組織數據存取實驗設計大規模定制質量和工藝工程回复:從剪貼板列表中選擇列的腳本這可能更簡單。使用 crlf 作為單詞函數的分隔符。
clipb = get clipboard();
print(clipb);
crlf = hex to char("0D0A");
col_list = words(clipb, crlf);
print(col_list);
我在 Big Class 中突出顯示了一些名字,然後運行了代碼。這是日誌窗口的輸出:
"JOE
MICHAEL
DAVID
JUDY
ELIZABETH
LESLIE
CAROL
PATTY"
{"JOE", "MICHAEL", "DAVID", "JUDY", "ELIZABETH", "LESLIE", "CAROL", "PATTY"}回复:從剪貼板列表中選擇列的腳本我之前的回复旨在向您展示如何訪問剪貼板中的項目。我假設從那裡您將能夠構建您需要的列表。這是一個更完整的示例,它獲取剪貼板中找到的每個項目,並將它們添加到名為“theList”的列表中。
因此,如果您將以下內容複製到剪貼板中

並運行腳本
Names Default To Here( 1 );
myClipboard = Get Clipboard();
theList ={};
i=1;
while( word(i,myClipboard,"\!t\!n\!r" ) != "",
insert into(theList,word(i,myClipboard,"\!t\!n\!r" ));
i++;
);
show(theList);
它創建 JMP 列表“theList”
theList = {"KATIE", "LOUISE", "JANE", "JACLYN", "LILLIE", "TIM", "JAMES", "ROBERT", "BARBARA", "ALICE"};回复:從剪貼板列表中選擇列的腳本我找到了一種魯布·戈德堡式的方法來生成所需的格式。稍後我會嘗試整合成一個完整的腳本來分享。
以下內容在剪貼板中獲取一個列表並將其轉換為所需的格式......例如{“Tcea1”,Atp6v1h”,“Oprk1”,“Rb1cc1,“Fam150a”}
//here get list from clipboard first . Here the column names are genes
//COPY columns names from a row in JMP or excel into your clipboard
//PART ONE
// New data table
// Data Table( "TempGeneList" )
New Table( "TempGeneList" );
//MANUALLY paste the list of column names you want to select into first column
// Transpose data table so your list become columns
Data Table( "TempGeneList" ) << Transpose(
Label( :Column 1 ),
Output Table( "Transpose of TempGeneList" )
);
//the open table "Transpose of TempGeneList" should have your list as colmun names
Names Default To Here( 1 );
dt2 = Current Data Table();
//get the column names into a form that works
genelist = dt2 << Get Column Names( string );
//Voila
回复:從剪貼板列表中選擇列的腳本感謝您多次為此提供幫助。但我認為我還不清楚。
當 Getclipboard 給我這個時...
{“Tcea1,Atp6v1h,Oprk1,Rb1cc1,Fam150a”}
我需要將其轉換為這個
{"Tcea1", Atp6v1h", "Oprk1", "Rb1cc1, "Fam150a"} 我更喜歡它,因為它會將數值轉換為字符串
或進入這個
{Tcea1、Atp6v1h、Oprk1、Rb1cc1、Fam150a}
有沒有一種簡單的方法來編寫該轉換的腳本......?
那麼您在六月提供的腳本很好地選擇了所有列。通常我的列表有數百個列標籤,所以我需要自動化。
謝謝
回复:從剪貼板列表中選擇列的腳本Get Clipboard() 將剪貼板中找到的所有內容作為單個字符串返回。要從返回的字符串中獲取特定值,必須使用 JMP 中的各種字符處理函數從字符串中獲取它們。
請注意,默認情況下,JMP 會在列值之間放置一個製表符作為間隔符。
如果打開名為 Big Class 的示例數據表,並將前 3 列(姓名、性別、年齡)的前 10 行複製到粘貼緩衝區中,則以下腳本將返回複製到的第 2 行中的個人姓名粘貼緩衝區。
Names Default To Here( 1 );
myClipboard = Get Clipboard();
theWord = Word( 4, myclipboard, "\!t\!n\!r" );
Show( theWord );
Word() 函數返回 myclipboard 變量中的第 n 個單詞,使用製表符、換行符和回車符作為要查找的分隔符以確定單詞間距。\!t 是轉義結構,指示製表符的不可打印字符。
從這個模式中,您應該能夠遍歷數據並找到您需要的所有信息。
回复:從剪貼板列表中選擇列的腳本遲來的....
我的列表從 JMP 數據框或 Excel 中的列複製到剪貼板
我需要將剪貼板內容(例如 3 個副本字符串、columnQ、columnX、columnB)轉換為腳本 {columnQ、columnX、columnB} 中的內容。
.....但是您列出的所有解決方案都會導致該系列周圍出現“”,並且腳本不會運行。如何擺脫“”?
謝謝
myClipboard = 獲取剪貼板();
/*:
“列Q
X 列
B欄”
//:*/
myClipboard = 單詞 (獲取剪貼板());
/*:
{“列Q
X 列
B 欄”}
//:*/
myClipboard = 單詞(獲取剪貼板(),);
/*:
{“列Q
X 列
B 欄”}
//:*/
myClipboard = Words(獲取剪貼板(),",");
/*:
{“列Q
X 列
B 欄”}
回复:從剪貼板列表中選擇列的腳本您可以使用
myClipboard = Get Clipboard();
將列表移動到內存變量中......在本例中,是一個名為“myClipboard”的變量,然後使用 JSL 根據需要操作它
如果您的剪貼板包含以下內容
Aasdh,Abca2,Abca7,Abcf1,Abi3
您可以使用以下命令將其檢索到 JMP 列表中
myClipboard = words(Get Clipboard(),",");