如何从Org mode表格提取值用于Lisp S表达式及血压判断公式异常问题
问题原因
Org模式表格公式引用单元格内容时,默认以字符串类型传递给Elisp表达式,你直接对字符串和数字执行大小比较,类型不匹配导致判断逻辑不符合预期。
解决方法
在表达式中先将引用的单元格内容通过string-to-number转换为数值类型,再执行比较判断即可。
正确公式示例
假设你的表格第二列为收缩压数值,第三列为判断结果,公式写法如下:
#+TBLFM: $3='(if (< (string-to-number $2) 120) "normal" "abnormal")
- 公式开头的单引号
'用于声明这是需要执行的Elisp表达式,而非calc公式 - 写完公式后将光标移动到公式行,按
C-c C-c即可触发计算,也可以按C-u C-c *重算整张表格的所有公式
可直接测试的完整表格样例
| 序号 | 收缩压 | 结果 | |------+--------+----------| | 1 | 118 | normal | | 2 | 122 | abnormal | | 3 | 119 | normal | | 4 | 120 | abnormal | #+TBLFM: $3='(if (< (string-to-number $2) 120) "normal" "abnormal")
内容的提问来源于stack exchange,提问作者KoshVorlon
相关产品推荐
相关产品推荐

