跨多列的每行最大值 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;
);