要在 emacs 中使用 org-mode 过滤表,我使用的是 org-babel。但是,我的功能不太有效,我不知道为什么。以下是包含我正在测试我的功能的 csv 的 zip 文件的链接:source。csv 被命名为2014-1 SubdivisionCodes.csv。
首先,我使用 emacs 打开文件,然后突出显示整个区域并运行将org-table-create-or-convert
CSV 转换为 ORG 表的命令。接下来我使用org-babel
语法命名表:#+tblname: un-states
紧随其后的是整个表格。我想过滤掉作为状态的行。这是我通过第四列中的值过滤表格的代码:
#+name: filter-un
#+begin_src emacs-lisp :var tbl=un-states
(remove-if (lambda (row) (not (equal (cadddr row) "State"))) tbl)
#+end_src
我评估函数,C-c C-c
我得到的结果是:
#+results: filter-un
| AU | NSW | New South Wales | State |
| AU | QLD | Queensland | State |
| AU | SA | South Australia | State |
| AU | TAS | Tasmania | State |
| AU | VIC | Victoria | State |
| AU | WA | Western Australia | State |
数据包括美利坚合众国的州,因此我们显然遗漏了很多州。为什么我的功能不起作用?我立即注意到的是AU
第一组有状态的行,它们都是连续的行。因此,它似乎在此之后停止工作。
- 如何让我的功能正常工作并包含更多状态?
感谢所有的帮助。我几个小时前才开始使用org-babel
,非常感谢所有帮助!