动态计算参数值

发布于 2025-01-04 06:02:33 字数 361 浏览 0 评论 0原文

当我将参数传递给 #+begin_src 块时,有没有办法动态计算它们?

具体来说,我想将 :height 属性设置为依赖于我的 R 代码中的某些变量的值,如以下模型所示:

#+begin_src R
x <- 5
#+end_src

#+begin_src R :results graphics :file foo.svg :height (3*getvar('x'))
...draw picture here
#+end_src

其中 getvar() 的事情,以及随之而来的计算,也许是我的一厢情愿。

When I'm passing arguments to a #+begin_src block, is there a way to compute them dynamically?

Specifically, I want to set the :height attribute to something that depends on some variables in my R code, like in the following mockup:

#+begin_src R
x <- 5
#+end_src

#+begin_src R :results graphics :file foo.svg :height (3*getvar('x'))
...draw picture here
#+end_src

where that getvar() thing, and computations therewith, is maybe my wishful thinking.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

━╋う一瞬間旳綻放 2025-01-11 06:02:33

我不知道如何使用 org-mode 来做到这一点,但这已经是 knitr 包中的一个功能(Sweave 的替代品),所以如果您不介意 Sweave 语法,您可以使用:

<<>>=
x <- 5
<<foo, dev='svg', fig.height=3*x>>=
# draw plots here
@

有关 knitr 中的组织模式的更多信息:http://yihui.name/knitr/demo/org/

I do not know how to use org-mode to do that, but this is already a feature in the knitr package (an alternative to Sweave), so if you do not mind the Sweave syntax, you can use:

<<>>=
x <- 5
<<foo, dev='svg', fig.height=3*x>>=
# draw plots here
@

More on org-mode in knitr: http://yihui.name/knitr/demo/org/

极度宠爱 2025-01-11 06:02:33

Org-mode 现在将标头规范中的括号解释为 elisp,因此您可以在中间使用一些 elisp 来执行此操作:

命名 R src 块

 #+name: default-height
 #+begin_src R
   x <- 300
 #+end_src

 #+results: default-height
 : 300

将 R 的结果作为 emacs 变量

#+begin_src emacs-lisp :var incoming = default-height :results silent
  (setq dh incoming)
#+end_src

在源块标头中使用 elisp

#+begin_src R :results graphics :file test.png :height (* dh 3)
  plot(rnorm(100))
#+end_src

#+results:
[[file:test.png]]

对我有用:)

Org-mode now interprets brackets in the header specs as elisp so you can do this with some elisp in between:

Named R src block

 #+name: default-height
 #+begin_src R
   x <- 300
 #+end_src

 #+results: default-height
 : 300

Make the result from R an emacs variable

#+begin_src emacs-lisp :var incoming = default-height :results silent
  (setq dh incoming)
#+end_src

Use of elisp in source block header

#+begin_src R :results graphics :file test.png :height (* dh 3)
  plot(rnorm(100))
#+end_src

#+results:
[[file:test.png]]

Works for me :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文