Запустите скрипт (или установите stringsAsFactors = FALSE) при загрузке пакета в R - PullRequest
2 голосов
/ 09 апреля 2019

Я ранее использовал Rprofile.site для установки options(stringsAsFactors = FALSE). Однако многочисленные источники сообщают, что использование Rprofile.site для этой цели делает код менее переносимым. Мое решение состояло в том, чтобы запускать source('C:/...startup.script.R') каждый раз, когда я загружаю R. Этот сценарий запуска устанавливает stringsAsFactors = FALSE (наряду с выполнением других задач). Это работает, но для того, чтобы поделиться своими сценариями с другими, мне придется поделиться интересующим сценарием и моим startup.script.R сценарием.

Я создаю собственный пакет, который позволит мне поделиться своими пользовательскими функциями. Я планирую поместить require(MyCustomFunctionsPackage) (или что-то в этом роде) в начало всех моих скриптов, чтобы загрузить мои пользовательские функции. Я хочу встроить source('C:/...startup.script.R') (или что-то в этом роде) и файл startup.script.R в пакет MyCustomFunctionsPackage так, чтобы при обмене сценариями мне нужно было только поделиться интересующим сценарием с вызовом devtools::install_github('MyCustomFunctionsPackage','github_username') и все мои пользовательские функции и настройки будут загружены. Есть ли способ сделать это? Я уверен, что ответ находится в книге Хэдли или литературе CRAN где-то, но я не уверен, какие ключевые слова искать.

1 Ответ

2 голосов
/ 09 апреля 2019

Вы можете предоставить функцию с именем .onLoad(), которая будет вызываться при загрузке пакета.Вот простой воспроизводимый пример, показывающий, как его можно использовать:

## Create and install a package containing a function `.onLoad()`
library(pkgKitten)
kitten("myopts")
cat(
".onLoad <- function(libname, pkgname) {
    options(stringsAsFactors = FALSE)
}
", file = "myopts/R/zzz.R")

devtools::install("myopts")

## Confirm that loading the package sets stringsAsFactors
options('stringsAsFactors')
## $stringsAsFactors
## [1] TRUE

library(myopts)
options('stringsAsFactors')
## $stringsAsFactors
## [1] FALSE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...