Maxima矩阵是否具备行列名称属性?打印时可显示(类R的colnames(m))
Maxima矩阵的行/列名支持说明
Maxima的原生矩阵对象没有内置的可直接在打印时显示的colnames(列名)和rownames(行名)属性,和R语言里colnames(m)这类开箱即用的功能不一样,你的猜测是对的。
不过可以通过自定义方式实现类似效果,满足你按行收集带名称打印的需求:
自定义带名称的矩阵结构
用Maxima的列表或记录类型,把矩阵数据和行/列名打包存储:// 定义一个带名称的矩阵 my_named_matrix: [ matrix_data: matrix([1.2, 3.4], [5.6, 7.8]), rownames: ["样本1", "样本2"], colnames: ["指标A", "指标B"] ];编写自定义打印函数
写一个函数专门处理带名称矩阵的格式化打印:print_named_matrix(named_mat) := block( [row_names: named_mat.rownames, col_names: named_mat.colnames, mat: named_mat.matrix_data, row_count: length(row_names)], // 先打印列名行 print(append([" "], col_names)), // 逐行打印行名+对应数据 for i from 1 to row_count do print(append([row_names[i]], args(mat[i]))) );调用示例:
print_named_matrix(my_named_matrix);输出效果会类似:
[" ", "指标A", "指标B"]
["样本1", 1.2, 3.4]
["样本2", 5.6, 7.8]函数返回场景适配
如果是自己写的函数需要返回带名称的数值集合,直接返回这种自定义的带名称矩阵结构即可,后续调用上面的打印函数就能实现带名称的输出。
内容的提问来源于stack exchange,提问作者ivo Welch
相关产品推荐
相关产品推荐

