Как я могу загрузить свой .RProfile, используя R Bundle от Textmate? - PullRequest
2 голосов
/ 15 февраля 2010

Этот вопрос для тех из вас, кто случайно использует R на Mac в сочетании с текстовым редактором Macromate [Textmate] (http://macromates.com/) и пакетом «R»). Все они изящны, разумеется, но сейчас дело не в этом: -)

У меня есть файл .RProfile, который находится в моем каталоге запуска по умолчанию "~", и в нем есть ряд полезных функций, к которым я хотел бы иметь доступ при написании R-скриптов. Но я также использую Textmate для большей части моих работ и функциональность cmd-R для запуска моих скриптов в Textmate.

В настоящее время я не знаю, как сообщить Textmate, где находится мой .Rprofile.

Есть ли способ - скорее всего, через настройки Bundle Textmate - что я могу указать Textmate на свой .RProfile, чтобы мне не приходилось записывать свои функции в каждый скрипт для каждого скрипта отдельно?

OR

Действительно ли лучше включать какие-либо пользовательские функции в любой сценарий, который я пишу, чтобы любой, имеющий базовую настройку R, мог получать и запускать мои сценарии?

Я чувствую, что, должно быть, мне здесь не хватает просто-напросто файла настроек или конфигурации в Textmate или в среде R, которую он вызывает для запуска моих сценариев.

Большое спасибо заранее!

Ответы [ 2 ]

3 голосов
/ 15 февраля 2010

Разработчик R Bundle, очевидно, работает над этим (см. Запись в списке рассылки), но в данный момент он недоступен.

А пока у вас есть пара вариантов.

Сначала вы можете создать новый пакет (например, "briandk-R"), затем создать фрагмент с этим пакетом либо с "source ($ 1)", либо просто жестко закодировать файл, который вы хотите использовать вместо источника заполнителя (например, "source (" ~ / some_file_to_source.R "). Если вы сделаете последнее, то вы можете настроить TM на источник вашего файла с помощью триггера вкладки (в редакторе пакетов, переключитесь на" настройки " '(верхний левый угол) и введите «source.r, source.rd.console» в поле «Выбор области», затем выберите несколько букв для триггера вкладки (например, «src.»)

Если вы не хотите этого делать, перейдите в каталог 'Rdaemon' (который находится либо в вашем домашнем каталоге, либо в ~ / Library / Application Support / Rdaemon). Загляните в этот каталог, и вы увидите еще один каталог под названием "демон". В нем есть файл с именем «start.r», в котором перечислены файлы, полученные при запуске R от Rdaemon. Вы знаете, что делать с этого (Примечание: этот каталог также содержит несколько других сценариев, которые содержат начальные настройки; Вы также можете посмотреть на них)

2 голосов
/ 18 февраля 2010

Первая часть ответа Дуга предлагает простейшее немедленное решение ... add

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

в заголовок любых .r файлов, в которые вы хотите добавить эти функции ... с одной строкой кода вы получите свои служебные функции. Конечно, это помогает, только если вы запускаете весь файл TM.

В идеале, пакет будет обновлен ... возможно, для поддержки переменной оболочки через настройки TM ???

TM_RPROFILE 

, который может быть указан как путь к вашему файлу .Rprofile.

Я только что взломал это в tmR.rb всего с 2 строками кода. Для этого перейдите в ~ / Библиотека / Поддержка приложений / TextMate / Нетронутая копия / Связки / и покажите содержимое 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}"

-Wil

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...