Script para seleccionar columnas de una lista en el portapapelesSeguimiento... todavía problema.
Necesito convertir una lista de cadenas copiadas de valores de fila que, cuando se pegan aquí, se ve así
Tcea1 Atp6v1h Oprk1 Rb1cc1 Fam150a
Cuando se pega en la ventana del script, se ve así
Tcea1
Atp6v1h
oprk1
Rb1cc1
Necesito código para convertir el contenido del portapapeles a esto
{Tcea1, Atp6v1h, Oprk1, Rb1cc1, Fam150a}
y esto no funciona.... {"Tcea1, Atp6v1h, Oprk1, Rb1cc1, Fam150a"}
pero esto hace {"Tcea1", "Atp6v1h", "Oprk1", "Rb1cc1", "Fam150a"}
Entonces... ¿cómo puedo modificar el comando Obtener portapapeles para generar la salida adecuada?o, alternativamente, eliminar el "" en una línea de código subsiguiente?
Gracias por tu ayuda.
junio 2021
Aquí está mi script (¡basado en la ayuda de todos ustedes!) que funciona muy bien, en este caso para seleccionar las columnas "Aasdh, Abca2, Abca7, Abcf1, Abi3" en una tabla de datos.
Mi nuevo problema: cuando tengo una gran lista de nombres de columnas en mi portapapeles, no quiero tener que escribir o convertir nombres separados por columnas como se muestra en el script t aquí.En cambio, quiero que el script use el portapapeles directamente para seleccionar las columnas en el marco de datos.
¿Cómo se puede convertir la lista del portapapeles en "Aasdh,Abca2,Abca7,Abcf1,Abi3...." directamente dentro del script?
¡gracias!
GUION
//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 )
)
);
Modelado Estadístico AvanzadoAutomatización y secuencias de comandosInvestigación del Consumidor y del MercadoOrganización de contenidoAcceso a los datosDiseño de experimentosLa personalización en masaIngeniería de Calidad y ProcesosRe: Script para seleccionar columnas de una lista en portapapelesEsto podría ser más simple.Utilice crlf como delimitador para la función de palabras.
clipb = get clipboard();
print(clipb);
crlf = hex to char("0D0A");
col_list = words(clipb, crlf);
print(col_list);
Resalté algunos nombres en Big Class y luego ejecuté el código.Esta es la salida de la ventana de registro:
"JOE
MICHAEL
DAVID
JUDY
ELIZABETH
LESLIE
CAROL
PATTY"
{"JOE", "MICHAEL", "DAVID", "JUDY", "ELIZABETH", "LESLIE", "CAROL", "PATTY"}Re: Script para seleccionar columnas de una lista en portapapelesMi respuesta anterior tenía la intención de mostrarle cómo acceder al elemento en el portapapeles.Asumí que a partir de ahí serías capaz de construir la lista que necesitabas.Aquí hay un ejemplo más completo que toma cada elemento que se encuentra en el portapapeles y los agrega a la lista llamada "theList".
Entonces, si copia en el portapapeles lo siguiente

y ejecutar el script
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);
Crea la lista JMP "theList"
theList = {"KATIE", "LOUISE", "JANE", "JACLYN", "LILLIE", "TIM", "JAMES", "ROBERT", "BARBARA", "ALICE"};Re: Script para seleccionar columnas de una lista en portapapelesEncontré una forma de Rube Goldberg-esque para generar el formato requerido.Intentaré integrarlo en un script completo más adelante para compartir.
lo siguiente toma una lista en el portapapeles y la convierte al formato requerido.... por ejemplo {"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
Re: Script para seleccionar columnas de una lista en portapapelesGracias por los repetidos esfuerzos para ayudar con esto.Sin embargo, no creo que esté siendo claro.
Cuando Getclipboard me da esto...
{"Tcea1, Atp6v1h, Oprk1, Rb1cc1, Fam150a"}
necesito convertirlo a esto
{"Tcea1", Atp6v1h", "Oprk1", "Rb1cc1, "Fam150a"} que prefiero porque convertiría valores numéricos en cadenas
o en esto
{Tcea1, Atp6v1h, Oprk1, Rb1cc1, Fam150a}
¿Hay una manera simple de escribir esa transformación....?
luego, el script que proporcionó en junio selecciona muy bien todas las columnas.Por lo general, mis listas tienen cientos de etiquetas de columna, por lo que necesito automatizarlas.
gracias
Re: Script para seleccionar columnas de una lista en portapapelesGet Clipboard() devuelve todo lo que se encuentra en el portapapeles como una sola cadena.Para obtener valores específicos de la cadena devuelta, se deben usar las diversas funciones de manejo de caracteres en JMP para obtenerlos de la cadena.
Como nota, de forma predeterminada, JMP colocó un carácter de tabulación como espaciador entre los valores de las columnas.
Si uno abriera la tabla de datos de muestra llamada Clase grande y copiara en el búfer de pegado las primeras 10 filas para las primeras 3 columnas (Nombre, Sexo, Edad), el siguiente script devolvería el nombre del individuo de la segunda fila copiada en el tampón de pasta.
Names Default To Here( 1 );
myClipboard = Get Clipboard();
theWord = Word( 4, myclipboard, "\!t\!n\!r" );
Show( theWord );
La función Word() devuelve la enésima palabra de la variable myclipboard, utilizando un tabulador, avance de línea y retorno de carro, como delimitadores que se deben buscar para determinar el espacio entre palabras.\!t es la estructura de escape que indica el carácter no imprimible de la pestaña.
A partir de este patrón, debería poder pasar a través de los datos y encontrar toda la información que necesita.
Re: Script para seleccionar columnas de una lista en portapapelestardío....
Mis listas se copian en el portapapeles desde una columna en el marco de datos JMP o Excel
Necesito que el contenido del portapapeles con, por ejemplo, 3 cadenas de copias, columnQ, columnX, columnB, se convierta en esto en el script {columnQ, columnX, columnB}.
..... pero todas las soluciones que enumeró dan como resultado "" alrededor de la serie, y el script no se ejecuta.¿Cómo deshacerse del "" ??
GRACIAS
miPortapapeles = Obtener Portapapeles();
/*:
"columnaQ
columnaX
columna B"
//:*/
miPortapapeles = palabras (Obtener Portapapeles());
/*:
{"columnaQ
columnaX
columnaB"}
//:*/
miPortapapeles = palabras(Obtener Portapapeles(),);
/*:
{"columnaQ
columnaX
columnaB"}
//:*/
miPortapapeles = palabras(Obtener Portapapeles(),",");
/*:
{"columnaQ
columnaX
columnaB"}
Re: Script para seleccionar columnas de una lista en portapapelesPuedes usar
myClipboard = Get Clipboard();
para mover la lista a una variable de memoria... en este ejemplo, una variable llamada "myClipboard", y luego usar JSL, manipularla como se desee
Si su portapapeles contenía lo siguiente
Aasdh,Abca2,Abca7,Abcf1,Abi3
Puede recuperarlo en una lista JMP usando
myClipboard = words(Get Clipboard(),",");