gpt4 book ai didi

matrix - Lisp 中矩阵代数的行和列标签

转载 作者:太空宇宙 更新时间:2023-11-03 19:00:42 25 4
gpt4 key购买 nike

我正在寻找一个用于矩阵代数的 Lisp 包,它显示每一行和每一列的名称标签以及数据,这使得数据更容易阅读。

R 做这样的事情:

                 George     Micheal      Maria
1999-01-04 1.0442238472 1427.447631 88.808903
1999-01-05 0.9944458362 1441.538069 88.730143
1999-01-06 1.0233398966 1472.594545 88.743269

有人知 Prop 有这种功能的矩阵代数 Lisp 包吗?

最佳答案

您可以使用简单的包装器自己添加行和列标签:

(defclass data-table ()
((matrix :initarg :matrix
:reader data-table-matrix)
(row-labels :initarg :row-labels
:reader data-table-row-labels)
(column-labels :initarg :column-labels
:reader data-table-column-labels)))

现在,定义一个读取函数来从打印的表格创建这样一个表格,并定义一个写入函数来写入它。您可以对 print-object 使用方法,对后者使用 print-unreadable-object:

(defmethod print-object ((object data-table) stream)
(print-unreadable-object (object stream)
(let ((matrix (data-table-matrix object))
(row-names (data-table-row-names object)))
(format stream "~% ");
(map nil
(lambda (name)
(format stream "~,10a" name))
(data-table-column-names object))
(dotimes (i (array-dimension matrix 0))
(format stream "~,10~a" (elt row-names i))
(dotimes (j (array-dimension matrix 1))
(format stream "~,10a" (aref matrix i j)))))))

(未经测试的原型(prototype)。我使用了 eltmap,因此您可以将行和列名称表示为任何序列,但您可能想要更改它以提高效率。)

关于matrix - Lisp 中矩阵代数的行和列标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26482201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com