JSL 介绍如何复制和粘贴列,就像右键单击列一样大家好,
我浏览了脚本索引,但没有找到有关如何在复制列和粘贴列选项中编写脚本的任何参考

日志会记录过去的部分,但不会记录复制的部分。
看起来粘贴部分只是创建一个具有相同名称的新公式,然后从复制的列粘贴复制的属性(我试图将多个更平滑的公式列从一个数据表复制到另一个数据表)
// Paste columns
Data Table("UBS") << New Column("Smoother(UBS Temp)", Numeric, "Continuous", Format("Best", 12), Formula(因此看起来我必须循环获取列名,在新表中创建新列,重命名它们,然后复制并粘贴列属性。
除非有人有更好的主意(我相信一定会有的!)
谢谢您的任何意见。
史蒂夫
自动化和脚本回复:JSL 介绍如何复制和粘贴列,就像右键单击列一样你想做什么?如果你只想复制字符值(而不是列属性),我会使用 Join 或数据表下标。此外,确保要复制值的列是字符类型
回复:JSL 介绍如何复制和粘贴列,就像右键单击列一样此命令似乎不适用于字符串值,但我找不到其他方法从列中复制和粘贴字符。有没有其他方法可以对字符执行此操作?
回复:JSL 介绍如何复制和粘贴列,就像右键单击列一样复制列属性 + 粘贴列属性可用于多列,因此如果您想使用它们,则可能是两行(我很可能不会并且会使用 << 获取脚本并循环遍历列)
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Tiretread.jmp");
dt2 = New Table("test it",
New Column("T1", numeric, continuous),
New Column("T2", numeric, continuous),
New Column("T3", numeric, continuous),
Add Rows(10)
);
dt << Copy Column Properties({:MODULUS, :ELONG});
dt2 << Paste Column Properties({:T1, :T3});
</CODE></P>
<P> </P></LINGO-BODY><LINGO-SUB id="lingo-sub-729552" slang="en-US" mode="CREATE">回复:JSL 介绍如何复制和粘贴列,就像右键单击列一样</LINGO-SUB><LINGO-BODY id="lingo-body-729552" slang="en-US" mode="CREATE"><P>这两个解决方案都很好用。谢谢<A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/26800" target="_blank">@hogi</A>和<A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/14366" target="_blank">@jthi</A> !</P><P> </P><P>我必须创建一个循环来处理我的列以将它们传输过去,因此仍然不如我有一个模仿复制的 JSL 单行项目和一个用于粘贴所选列的项目那么优雅,但至少我现在可以到达那里。</P><P> </P><P>再次感谢!<BR /><BR /></P><P>史蒂夫</P></LINGO-BODY><LINGO-SUB id="lingo-sub-729541" slang="en-US" mode="CREATE">回复:JSL 介绍如何复制和粘贴列,就像右键单击列一样</LINGO-SUB><LINGO-BODY id="lingo-body-729541" slang="en-US" mode="CREATE"><P>如果只是关于公式,您可以使用<FONT face="courier new,courier"><<获取公式</FONT>- 然后使用返回的表达式在第二个表中创建列:<BR /><BR /></P><PRE><CODE class=" language-jsl">Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Column( "A",
Format( "Best", 12 ),
Formula( :weight - :height )
);
myformula =:a << get formula;
dtnew = Open( "$SAMPLE_DATA/Big Class Families.jmp" );
Eval(Eval Expr(dt new << new column ("A", Formula(Expr(Name Expr(myformula))))))
回复:JSL 介绍如何复制和粘贴列,就像右键单击列一样在这种情况下,我更喜欢使用 Send() 函数而不是使用 <<
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
newcol = dt << New Column("ABC", Numeric, Continuous, Formula(:height * :weight));
colscript = Column(dt, "ABC") << get script;
Eval(EvalExpr(
Send(dt, Expr(NameExpr(colscript)))
));
您还可以通过脚本复制/粘贴列属性,但我会使用<<获取脚本,因为它更清楚它应该做什么,并且不会弄乱剪贴板
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
newcol = dt << New Column("ABC", Numeric, Continuous, Formula(:height * :weight));
dt << Copy Column Properties({:ABC});
dt << New Column("ABCD");
dt << Paste Column Properties({:ABCD});
</CODE></P>
<P> </P></LINGO-BODY><LINGO-SUB id="lingo-sub-729458" slang="en-US" mode="CREATE">回复:JSL 介绍如何复制和粘贴列,就像右键单击列一样</LINGO-SUB><LINGO-BODY id="lingo-body-729458" slang="en-US" mode="CREATE"><P>哦——这比我想象的要复杂得多。</P><P> </P><PRE><CODE class=" language-jsl">my new table << myscript
不起作用......
因此,任何一方都必须通过以下方式准备消息:
Eval (EvalExpr(dt << Expr(Name Expr(myscript))))
或者
Eval(Substitute(Expr(dt << _message_), Expr(_message_), Name Expr(myscript)))
或者在执行脚本之前切换当前数据表:
current data table( my new table);
myscript
回复:JSL 介绍如何复制和粘贴列,就像右键单击列一样感谢@hogi 的建议,这可能是一个愚蠢的问题,但下一步该怎么做?我从参考列中获取脚本后,尝试使用粘贴列属性,但似乎不起作用。感谢您对下一步的任何见解!
史蒂夫
回复:JSL 介绍如何复制和粘贴列,就像右键单击列一样你可以问一下这个专栏——对于更多的对象来说也是同样的可能:
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Column( "A",
Format( "Best", 12 ),
Formula( :weight - :height )
);
myscript = :A << get script()