gpt4 book ai didi

r - 使用 Emacs/ESS 用 R 构建统计分析

转载 作者:行者123 更新时间:2023-12-03 22:52:18 24 4
gpt4 key购买 nike

我正在寻找一种方法来构建我的统计分析。我目前使用 Emacs/ESS 并且分析文件很长。我已经开始将部分代码放入一个单独的文件中的源函数中,但仍然......

我想在文件中引入某种副标题/部分标题(聚合、聚类分析、模拟等)并在其下编写代码,这样我就可以快速跳转到我想要处理的部分。

我想我可以只使用评论并搜索它们,但我无法通过这种方式获得概述或索引。我也考虑过将 Org-Mode 用于头条新闻,但这对于与其他编辑器一起工作的协作者来说不是很方便。

我知道 R-Studio 用部分来实现这一点,所以 emacs 会有一个解决方案,对吧?

非常感谢!

PS:像imenu这样的东西可以工作,但这只是针对功能,而不是针对部分

最佳答案

通常我使用 org-mode 和 org-babel,但是当我必须与其他人共享脚本时,我的 .emacs 中有以下内容:

(defgroup ess-jb-faces nil
"Faces used by cutomized ess-mode"
:group 'faces)

(defface ess-jb-comment-face
'((t (:background "cornsilk"
:foreground "DimGrey"
:inherit font-lock-comment-face)))
"Face used to highlight comments."
:group 'ess-jb-faces)

(defface ess-jb-comment-bold-face
'((t (:weight bold
:inherit ess-jb-comment-face)))
"Face used to highlight bold in comments."
:group 'ess-jb-faces)

(defface ess-jb-h1-face
'((t (:height 1.6
:weight bold
:foreground "MediumBlue"
:inherit ess-jb-comment-face)))
"Face used to highlight h1 headers."
:group 'ess-jb-faces)

(defface ess-jb-h2-face
'((t (:height 1.2
:weight bold
:foreground "DarkViolet"
:inherit ess-jb-comment-face)))
"Face used to highlight h2 headers."
:group 'ess-jb-faces)

(defface ess-jb-h3-face
'((t (:height 1.0
:weight bold
:foreground "DarkViolet"
:inherit ess-jb-comment-face)))
"Face used to highlight h3 headers."
:group 'ess-jb-faces)

(defface ess-jb-hide-face
'((t (:foreground "white"
:background "white"
:inherit ess-jb-comment-face)))
"Face used to hide characters."
:group 'ess-jb-faces)

(font-lock-add-keywords 'ess-mode
'(("^###\\(#\\)\\([^#].*\\)$" (1 'ess-jb-hide-face t)(2 'ess-jb-h1-face t))
("^###\\(##\\)\\([^#].*\\)$" (1 'ess-jb-hide-face t)(2 'ess-jb-h2-face t))
("^###\\(###\\)\\([^#].*\\)$" (1 'ess-jb-hide-face t)(2 'ess-jb-h3-face t))
("^###\\( .*\\|$\\)" 1 'ess-jb-comment-face t)
("^###" "\\*.*?\\*" nil nil (0 'ess-jb-comment-bold-face append))
))

有了这个,任何评论 ####在行的开头被格式化为“header 1”。任何评论 #####被格式化为“标题 2”等。以及以 ### 开头的行被视为带有特殊字体锁的注释(用于长注释)。

这可以给出这样的东西:

enter image description here

这很hacky,但优点是它只使用标准的R注释,因此可以毫无问题地与其他人共享。一般来说,我对“header 1”使用以下内容:其他人将其视为如下,而我喜欢我定义的 font-lock :
############################################
#### HEADER 1
############################################

使用此语法,您还可以使用以下内容激活 outline-minor-mode在先前定义的部分上并能够折叠/展开它们:
(add-hook 'ess-mode-hook
'(lambda ()
(auto-complete-mode nil)
(outline-minor-mode 1)
(setq outline-regexp "\\(^#\\{4,6\\}\\)\\|\\(^[a-zA-Z0-9_\.]+ ?<- ?function(.*{\\)")
(setq outline-heading-alist
'(("####" . 1) ("#####" . 2) ("######" . 3)
("^[a-zA-Z0-9_\.]+ ?<- ?function(.*{" .4)))))

所有这些代码都没有经过很好的测试,而且我远不是 emacs lisp 的专家,所以应该有更好的方法来做到这一点,并且在出现错误时不要感到惊讶!

关于r - 使用 Emacs/ESS 用 R 构建统计分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14941429/

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