要在emacs中使用org-mode过滤表格,我正在使用org-babel。但是,我的功能不太合适,我不知道为什么。以下是zip文件的链接,其中包含我正在测试我的函数的csv: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
,非常感谢所有帮助!