尝试在动态公式中使用时如何处理列名中的引号<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />假设我有一个表,其标题为Greek和AlsoGreek,如下所示:
希腊语Also希腊语
阿尔法披
Beta欧米茄
伽玛·泽塔
以下脚本将为我提供一个名为“ concat”的列,该列将合并两列(我在concat符号之间添加了制表符,以使其更具可读性)。
dt =当前数据表();
colnames = dt <<获取列名;
colstring =“:Name(\!”“ || char(colnames [1])||” \!“)”;
对于(i = 2,i <= nitems(colnames),i ++,
colstring = colstring || “ ||” || “:Name(\!”“ || char(别名)|| “ \!”)“
);
parsecolstring = parse(colstring);
dt << new column(“ concat”,formula(parsecolstring));
现在,很奇怪的是,如果我将表头Also AlsoGreek放在引号中(如“ AlsoGreek”),该代码将无法正常工作。 这是错误日志的输出(我在上述代码中的所有变量之后添加了show,以便我可以看到发生了什么
colnames = {希腊语,名称(“ \!” AlsoGreek \!“”)};
Char(colnames [1])=“希腊文”;
colstring =“:Name(\!”希腊\!“)”;
colstring =“:Name(\!”希腊\!“)||:Name(\!” \!“ AlsoGreek \!” \!“)”;
应为“)”,但找到“ AlsoGreek”。
第1行第25列::Name(“希腊”)||:Name(“”►AlsoGreek“”)
有解决方案吗?如果不是,是否有办法从列名中提取引号?我尝试使用替代项删除\!“,但JMP无法将其识别为字符串...
任何帮助将不胜感激!我有> 100列,在列名中用引号引起来...
回复:尝试在动态公式中使用时如何处理列名中的引号我很难理解您要达到的目标。但是,如果要连接JMP表中的所有ColumnName,并使用该新名称创建新列,则此代码适用于您的示例:
通过创建变量NameofNewColumn,并在EVAL函数中包含的New Column语句中使用它,...。 可能会帮助您。
dt =当前数据表();
colnames = dt <<获取列名;
NameofNewColumn =“”;
对于(i = 1,i
NameofNewColumn = NameofNewColumn ||字符(别名);
);
eval(dt <<新列(NameofNewColumn)));
回复:尝试在动态公式中使用时如何处理列名中的引号我想我会自己回答
问题是JMP无法识别哪些引号与\!“相关联,而哪些引号与\!”不相关。 因此,我的怀疑是,当在带引号的列上使用char函数,然后再使用tyr对其进行解析或对该字符串进行其他操作时,会遇到问题。
有两种处理方法-第一种方法是将要连接的所有列都放在列表中,然后使用parse(concat(list))选项。
另一种方法(这是我使用的方法)是获取列表中的列,然后使用简单的for语句删除引号:
noquotes = {},
对于(i = 1,n <= nitems(origlist),i ++,
插入(noquotes,substitute(char(origlist) ),“ \!”“,”“));
作为名字(原著<<设置名称(无引号);
);
使用noquotes列表名称来引用感兴趣的列,完成后,您可以通过执行与上述脚本相反的操作,将列名称更改回原始名称。