ess-view-data: 基于ESS的 tidyverse data viewer 支持

新建了一个Emacs package ess-view-data,在Emacs+ESS里可以采用类似 tidyverse/dplyr 的数据查看和操作。

CUSTOMIZATION

ESS-VIEW-DATA-BACKEND-LIST, 查看数据的后端

  • dplyr (default)
  • dplyr+DT
  • data.table+magrittr

ESS-VIEW-DATA-PRINT-BACKEND-LIST,将数据显示到emacs buffer的后端

  • print (default)
  • kable

ESS-VIEW-DATA-SAVE-BACKEND-LIST 保存数据的后端

  • write.csv (default)
  • readr::write_csv
  • data.table::fwrite
  • kable

ESS-VIEW-DATA-COMPLETE-BACKEND-LIST 补全的后端

  • jsonlite

ESS-VIEW-DATA-READ-STRING

  • ess-completing-read (default)
  • completing-read
  • ido-completing-read
  • ivy-completing-read

USAGE

在 ess-r 里,调用 ess-view-data-print,然后选择需要查看的data.frame,就会打开一个相应的buffer。

NOTE : 为了避免误操作,会将原data.frame复制一份(as.tibble)

  • [x] ess-view-data-print: the main function to view data
  • [x] ess-view-data-set-backend: change backend
  • [x] ess-view-data-toggle-maxprint: toggle limitation of lines per page to print
  • [x] ess-view-data-filter
  • [x] ess-view-data-select / ess-view-data-unselect
  • [x] ess-view-data-sort
  • [x] ess-view-data-group / ess-view-data-ungroup
  • [x] ess-view-data-mutate
  • [x] ess-view-data-slice
  • [x] ess-view-data-wide2long / ess-view-data-long2wide
  • [x] ess-view-data-update
  • [x] ess-view-data-reset
  • [x] ess-view-data-unique
  • [x] ess-view-data-count
  • [x] ess-view-data-summarise
  • [x] ess-view-data-overview
  • [x] ess-view-data-goto-page / -next-page / -preious-page / -first-page / -last-page / -page-number
  • [x] ess-view-data-save
4 个赞

已加入submodule,坐等elpa :smile:

1 个赞

已经上了melpa

已转到melpa :smile: 比从submodule快多了

最近不得不在Win上工作,上周开始以Linux下的配置,重新配置R环境,发现:

ess-view-data-print报错: Wrong type argument: stringp, nil

请问老哥我改怎么调试呢?这个包我没也写其他config:

(use-package ess-view-data
    :defer t)

你的ess和ess-view-data的版本是什么?钱多时间ESS更新了一个底层函数,导致ess-view-data报错,后来我更新了一下,就好了。

我这边的版本:

  • ESS: ess-20201217.1440
  • ess-view-data: ess-view-data-20201202.1124

ess-view-data我已经是20201202了,刚才把ESS从20201208升级到20201217,还是一样地报错 :upside_down_face:

(setq ess-verbose t) 然后看看 *ESS* 里的有什么报错记录

另需要csv-mode提供header的支持。

另 R 方面:

  • dplyr for ess-view-data-backend-list is dplyr by default.

Optional:

  • knitr for ess-view-data--kable-format
  • skimr for ess-view-data-skimr
  • tidyr for ess-view-data-wide2long and ess-view-data-long2wide

If you switch to other ess-view-data-backend-list , DT or data.table is needed.

1 个赞

这么一说就明白了,最近学data.table,新机器上tidyverse那一堆里就装了一个magrittr :sweat_smile:

C-h v ess-view-data-backend-list 说不定有惊喜

(setq-default ess-view-data-current-backend 'data.table+magrittr) 或者 M-x ess-view-data-set-backend

欢迎提建议完善 data.table+magrittr 的支持功能

嗯,我上午已经折腾了这个了,print没有问题。只是ess-view-data-summarise还有skimr那几个函数还是报错,这我记得之前在Linux是成功运行过的。

*ESS*里是这样的:

NORMAL-FILTER:
    --> busy:nil busy-end:t sec-prompt:nil interruptable:nil <--
    --> running-async:nil callback:nil suppress-next-output:t <--
    --> dbg-active:nil is-recover:nil <--
    --> string:> 

不知道是不是哪里的打开方式不对,可以给个配置文件参考吗?我在这里也没找到 :thinking:

这个包挺有用的, 收到了启发, 写了篇博文。

http://yitang.uk/2024/04/10/2024-04-10-less-excel-more-rpython-in-emacs/