跨多列的每行最大值 JMP10当我在 JMP 10 中运行下面的脚本时,收到一条错误消息,指出 - 在访问或评估“Loc Max”时参数应该是矩阵{1},错误的参数...
看起来数据表索引是 JMP13 中的一个功能。 JMP10 中的解决办法是什么?
dt = 新表(“无标题”,
新列( "a", 数字, 设置值( [1, 33, 1] ) ),
新列( "b", 数字, 设置值( [2, 2, 2] ) ),
新列( "c", 数字, 设置值( [333, 1, 0] ) ),
新列(“maxval”,数字),
新列(“maxcol”,数字)
);
colnames = dt << getcolumnnames;
对于每一行(
r = 行();
// 1::3 表示第 1 列到第 3 列。 {a,b,c} 也可以。
位置 = Loc Max( dt[ r, 1 :: 3] ); // 数组中最大值的位置
maxval = dt[r, 位置];
maxcol = colnames[位置] << getname;
);
谢谢!
回复:跨多列的每行最大值 JMP10您可以首先获取矩阵形式的值,然后从矩阵而不是数据表中获取每一行:
dt = New Table( "Untitled",
New Column( "a", Numeric, Set Values( [1, 33, 1] ) ),
New Column( "b", Numeric, Set Values( [2, 2, 2] ) ),
New Column( "c", Numeric, Set Values( [333, 1, 0] ) ),
New Column( "maxval", numeric ),
New Column( "maxcol", Numeric )
);
colnames = dt << getcolumnnames;
values = dt << Get As Matrix;
For Each Row(
r = Row();
// 1::3 means columns 1 through 3. {a,b,c} would also work.
location = Loc Max( values[r, 1 :: 3] ); // location of maximum value in array
maxval = dt[r, location];
maxcol = colnames[location] << getname;
);