2016-06-14 2 views
2

Мне нужно создать очень простой пакет R, содержащий функцию, использующую RStudio. Я хочу отдать его некоторым ученикам.Автоматический запуск функции при загрузке пакета R

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

Как я могу получить его?

PD: Я не могу изменить профиль других людей .Rprofile, поэтому мне нужен способ автоматической загрузки функции при загрузке пакета.

+0

Посмотрите на '? Startup'. Я думаю, вы захотите создать Rprofile для загрузки пакета, и вы можете обнаружить, что определение функции '.First' для запуска вашей функции - лучший способ достичь вашей второй цели. Точные сведения о том, как это сделать, зависят от системы, но вы должны найти всю необходимую информацию на этой странице справки. –

+1

Возможный дубликат [Как загрузить пакеты в R автоматически?] (Http://stackoverflow.com/questions/10300769/how-to-load-packages-in-r-automatically) –

+1

Что * автоматически запускает мою функцию * имею в виду? –

ответ

2

В случае, если вы хотите запустить что-то, когда R начинается:

Start RStudio и запустить следующие действия для создания .Rprofile файл в вашем домашнем каталоге:

file.edit("~/.Rprofile") 

Поместить следующую функцию в этом файле:

.First <- function(){ 
    cat("Hello!") # startup message 

    require(data.table) 
    # or whatever packages you want to load 

    # or if you want to run a function in a file 
if(file.exists("~/myfile.r")){ 
     source("~/myfile.r") 
     myfunc() 
    } 

} 

Сохраните его. Готово!

Как редактировать OP в

В случае, если вы хотите запустить что-то, когда ваш пакет будет загружен, вы можете использовать .onLoad и .onAttach функции. Например:

.onAttach <- function(libname, pkgname) { 
    # to show a startup message 
    packageStartupMessage("This is my package, enjoy it!") 
} 

.onLoad <- function(libname, pkgname) { 
     # something to run 
} 
+0

ОК, спасибо, я попробую – skan

+2

Хм, в каком файле их поставить? – untill

Смежные вопросы