Skript zum Auswählen von Spalten aus einer Liste in der ZwischenablageFollow-up....immer noch Problem.
Ich muss eine aus Zeilenwerten kopierte Liste von Zeichenfolgen konvertieren, die beim Einfügen hier so aussieht
Tcea1 Atp6v1h Oprk1 Rb1cc1 Fam150a
Beim Einfügen in das Skriptfenster sieht es so aus
Tcea1
Atp6v1h
Oprk1
Rb1cc1
Ich benötige Code, um den Inhalt der Zwischenablage in diesen umzuwandeln
{Tcea1, Atp6v1h, Oprk1, Rb1cc1, Fam150a}
und das funktioniert nicht .... {"Tcea1, Atp6v1h, Oprk1, Rb1cc1, Fam150a"}
aber das tut {"Tcea1", "Atp6v1h", "Oprk1", "Rb1cc1", "Fam150a"}
Also.... wie kann ich den Befehl „Get Clipboard“ ändern, um die richtige Ausgabe zu generieren?oder alternativ das „“ in einer nachfolgenden Codezeile entfernen?
Vielen Dank für Ihre Hilfe.
Juni 2021
Hier ist mein Skript (basierend auf der Hilfe von Ihnen allen!), das gut funktioniert, in diesem Fall zum Auswählen der Spalten „Aasdh,Abca2,Abca7,Abcf1,Abi3“ in einer Datentabelle.
Mein neues Problem: Wenn ich eine große Liste von Spaltennamen in meiner Zwischenablage habe, möchte ich keine nach Spalten getrennten Namen eingeben oder konvertieren, wie hier im t-Skript gezeigt.Stattdessen möchte ich, dass das Skript die Zwischenablage direkt verwendet, um die Spalten im Datenrahmen auszuwählen.
Wie kann man die Zwischenablageliste direkt im Skript in „Aasdh,Abca2,Abca7,Abcf1,Abi3....“ umwandeln?
Danke!
SKRIPT
//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 )
)
);
Erweiterte statistische ModellierungAutomatisierung und SkripterstellungVerbraucher- und MarktforschungInhaltsorganisationDatenzugriffVersuchsplanungMassenanpassungQualitäts- und VerfahrenstechnikBetreff: Skript zum Auswählen von Spalten aus einer Liste in der ZwischenablageDas könnte einfacher sein.Verwenden Sie crlf als Trennzeichen für die Wortfunktion.
clipb = get clipboard();
print(clipb);
crlf = hex to char("0D0A");
col_list = words(clipb, crlf);
print(col_list);
Ich habe einige Namen in Big Class hervorgehoben und dann den Code ausgeführt.Dies ist die Ausgabe des Protokollfensters:
"JOE
MICHAEL
DAVID
JUDY
ELIZABETH
LESLIE
CAROL
PATTY"
{"JOE", "MICHAEL", "DAVID", "JUDY", "ELIZABETH", "LESLIE", "CAROL", "PATTY"}Betreff: Skript zum Auswählen von Spalten aus einer Liste in der ZwischenablageMeine vorherige Antwort sollte Ihnen zeigen, wie Sie auf das Element in der Zwischenablage zugreifen können.Ich ging davon aus, dass Sie von dort aus die benötigte Liste erstellen könnten.Hier ist ein vollständigeres Beispiel, das jedes in der Zwischenablage gefundene Element nimmt und es der Liste mit dem Namen „theList“ hinzufügt.
Wenn Sie also Folgendes in die Zwischenablage kopieren

und führen Sie das Skript aus
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);
Es erstellt die JMP-Liste „theList“
theList = {"KATIE", "LOUISE", "JANE", "JACLYN", "LILLIE", "TIM", "JAMES", "ROBERT", "BARBARA", "ALICE"};Betreff: Skript zum Auswählen von Spalten aus einer Liste in der ZwischenablageIch habe einen Rube-Goldberg-ähnlichen Weg gefunden, das erforderliche Format zu generieren.Ich werde später versuchen, es in ein vollständiges Skript zu integrieren, um es zu teilen.
Das Folgende nimmt eine Liste in der Zwischenablage und konvertiert sie in das erforderliche Format ... z. B {"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
Betreff: Skript zum Auswählen von Spalten aus einer Liste in der ZwischenablageVielen Dank für die wiederholten Bemühungen, dabei zu helfen.Allerdings glaube ich nicht, dass ich mich klar ausdrücke.
Wenn Getclipboard mir das gibt...
{"Tcea1, Atp6v1h, Oprk1, Rb1cc1, Fam150a"}
Ich muss es in dieses umwandeln
{"Tcea1", Atp6v1h", "Oprk1", "Rb1cc1, "Fam150a"}, was ich bevorzuge, weil es numerische Werte in Zeichenfolgen umwandeln würde
oder hinein
{Tcea1, Atp6v1h, Oprk1, Rb1cc1, Fam150a}
Gibt es eine einfache Möglichkeit, diese Transformation zu skripten?
Dann wählt das Skript, das Sie im Juni bereitgestellt haben, alle Spalten sorgfältig aus.Normalerweise haben meine Listen Hunderte von Spaltenbezeichnungen, daher muss ich sie automatisieren.
Danke
Betreff: Skript zum Auswählen von Spalten aus einer Liste in der ZwischenablageGet Clipboard() gibt alles, was in der Zwischenablage gefunden wird, als einzelne Zeichenfolge zurück.Um bestimmte Werte aus der zurückgegebenen Zeichenfolge abzurufen, müssen Sie die verschiedenen Zeichenverarbeitungsfunktionen in JMP verwenden, um sie aus der Zeichenfolge abzurufen.
Bitte beachten Sie, dass JMP standardmäßig ein Tabulatorzeichen als Abstandszeichen zwischen den Spaltenwerten platziert hat.
Wenn man die Beispieldatentabelle „Big Class“ öffnen und die ersten 10 Zeilen für die ersten drei Spalten (Name, Geschlecht, Alter) in den Einfügepuffer kopieren würde, würde das folgende Skript den Namen der Person aus der zweiten kopierten Zeile zurückgeben der Pastenpuffer.
Names Default To Here( 1 );
myClipboard = Get Clipboard();
theWord = Word( 4, myclipboard, "\!t\!n\!r" );
Show( theWord );
Die Funktion Word() gibt das n-te Wort aus der Variable myclipboard zurück und verwendet dabei Tabulator, Zeilenvorschub und Wagenrücklauf als Trennzeichen, nach denen gesucht werden muss, um den Wortabstand zu bestimmen.\!t ist die Escape-Struktur, die das nicht druckbare Zeichen für das Tab angibt.
Anhand dieses Musters sollten Sie in der Lage sein, die Daten durchzugehen und alle benötigten Informationen zu finden.
Betreff: Skript zum Auswählen von Spalten aus einer Liste in der Zwischenablageverspätet....
Meine Listen werden aus einer Spalte im JMP-Datenrahmen oder in Excel in die Zwischenablage kopiert
Ich benötige den Inhalt der Zwischenablage mit z. B. 3 Kopien der Zeichenfolgen, SpalteQ, SpalteX, SpalteB, um sie im Skript {SpalteQ, SpalteX, SpalteB} in diesen Inhalt umzuwandeln.
..... aber alle von Ihnen aufgelisteten Lösungen führen zu „“ rund um die Serie, und das Skript wird nicht ausgeführt.Wie wird man das „“ los??
DANKE
myClipboard = Clipboard();
/*:
"columnQ
SpalteX
SpalteB"
//:*/
myClipboard = Wörter (Get Clipboard());
/*:
{"columnQ
SpalteX
SpalteB"}
//:*/
myClipboard = Wörter(Get Clipboard(),);
/*:
{"columnQ
SpalteX
SpalteB"}
//:*/
myClipboard = Words(Get Clipboard(),",");
/*:
{"columnQ
SpalteX
SpalteB"}
Betreff: Skript zum Auswählen von Spalten aus einer Liste in der ZwischenablageSie können verwenden
myClipboard = Get Clipboard();
um die Liste in eine Speichervariable zu verschieben ..... in diesem Beispiel eine Variable namens „myClipboard“, und bearbeiten Sie sie dann mit JSL wie gewünscht
Wenn Ihre Zwischenablage Folgendes enthielt
Aasdh,Abca2,Abca7,Abcf1,Abi3
Sie können es mit in eine JMP-Liste abrufen
myClipboard = words(Get Clipboard(),",");