繁体   English   中英

我如何使用Textmate的R Bundle加载.RProfile

[英]How can I load my .RProfile using Textmate's R Bundle

该问题针对的是那些在Mac上碰巧结合Macromate的[Textmate](http://macromates.com/)文本编辑器和“ R”捆绑软件一起使用R的用户。 所有这些都是很漂亮的,不用说,但是现在还不重要:-)

我有一个.RProfile文件位于默认的“〜”启动目录中,并且其中包含许多有用的函数,我希望在编写R脚本时可以使用它们。 但是我在大部分写作中也使用Textmate,并使用cmd-R功能在Textmate中运行脚本。

目前,我不知道如何告诉Textmate我的.Rprofile在哪里。

有没有一种方法(很可能是通过Textmate的Bundle设置完成的),我可以将Textmate指向我的.RProfile,这样就不必在每个脚本的基础上将函数写入每个脚本了?

要么

在我编写的任何脚本中包含任何自定义函数实际上是否更好,以便具有基本R设置的任何人都可以获取和运行我的脚本?

我觉得我一定在Textmate或调用我的脚本的R环境中缺少一个容易设置的设置或配置文件。

非常感谢!

R Bundle Developer显然正在为此工作(请参阅邮件列表中的此帖子 ),但目前尚不可用。

同时,您有两种选择。

首先,您可以创建一个新的捆绑软件(例如“ briandk-R”),然后使用“ source($ 1)”在该捆绑软件中创建一个代码段,也可以仅硬编码要获取的文件而不是占位符(因此,例如,“ source(“〜/ some_file_to_source.R”)。如果您要进行后者,则可以将TM配置为通过选项卡触发器来获取文件(在捆绑包编辑器中,切换到“设置”(上方左上角),然后在“范围选择器”字段中键入“ source.r,source.rd.console”,然后为制表触发选择几个字母(例如“ src”)。

如果您不想这样做,请转到“ Rdaemon”目录(位于您的主目录或〜/ Library / Application Support / Rdaemon中)。 查看该目录,您将看到另一个名为“守护程序”的目录。 在其中有一个名为“ start.r”的文件,其中列出了从Rdaemon启动R时获得的文件。您知道从那里开始的工作。(注意:该目录还包含几个其他脚本,这些脚本包含初始设置。您可能也希望看看这些)

道格回应的第一部分提供了最简单的即时解决方案...添加

source('/Users/briandk/.Rprofile')

在您想要这些功能的任何.r文件的开头...使用那一行代码,即可获得实用程序功能。 当然,这仅在运行整个TM文件时才有用。

理想情况下,捆绑软件将被更新……也许可以通过TM的首选项来支持shell变量???

TM_RPROFILE 

可以将其设置为您的.Rprofile文件的路径。

我只是用两行代码将其破解到了tmR.rb中。 要实现此目的,请转至〜/ Library / Application Support / TextMate / Pristine Copy / Bundles /并显示R.tmbundle的内容

在这里,您可以找到support / tmR.rb

在我的版本中,在112行附近,您应该更改

tmpDir = File.join(ENV['TMP'] || "/tmp", "TM_R")
recursive_delete(tmpDir) if File.exists?(tmpDir) # remove the temp dir if it's already there
Dir::mkdir(tmpDir)

# Mechanism for dynamic reading
# stdin, stdout, stderr = popen3("R", "--vanilla", "--no-readline", "--slave", "--encoding=UTF-8")
stdin, stdout, stderr, pid = my_popen3("R --vanilla --slave --encoding=UTF-8 2>&1")
# init the R slave
stdin.puts(%{options(device="pdf")})
stdin.puts(%{options(repos="#{cran}")})

tmpDir = File.join(ENV['TMP'] || "/tmp", "TM_R")
recursive_delete(tmpDir) if File.exists?(tmpDir) # remove the temp dir if it's already there
Dir::mkdir(tmpDir)

rprofile = (ENV['TM_RPROFILE'] == nil) ? "" : "source('" + ENV['TM_RPROFILE'] + "')"

# Mechanism for dynamic reading
# stdin, stdout, stderr = popen3("R", "--vanilla", "--no-readline", "--slave", "--encoding=UTF-8")
stdin, stdout, stderr, pid = my_popen3("R --vanilla --slave --encoding=UTF-8 2>&1")
# init the R slave
stdin.puts("#{rprofile}")
stdin.puts(%{options(device="pdf")})
stdin.puts(%{options(repos="#{cran}")})

只需在其中添加2行...以“ rprofile =“开头的行和包含“#{rprofile}”的行

-会

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM