用于从剪贴板列表中选择列的脚本跟进...仍然有问题。
我需要转换从行值复制的字符串列表,粘贴到此处时看起来像这样
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(),",");