在R中加载包时运行脚本(或将stringsAsFactors设置为FALSE)

在R中加载包时运行脚本(或将stringsAsFactors设置为FALSE),r,package,R,Package,我以前使用过Rprofile.site来设置选项(stringsAsFactors=FALSE)。然而,许多源文件都表示,为此目的使用Rprofile.site会降低代码的可移植性。我的解决方案是每次加载R时都运行source('C:/…startup.script.R')。此启动脚本设置stringsAsFactors=FALSE(以及完成其他任务)。这是可行的,但为了与其他人共享我的脚本,我必须共享感兴趣的脚本和我的startup.script.Rscript 我正在创建一个自定义包,它允许

我以前使用过
Rprofile.site
来设置
选项(stringsAsFactors=FALSE)
。然而,许多源文件都表示,为此目的使用
Rprofile.site
会降低代码的可移植性。我的解决方案是每次加载R时都运行
source('C:/…startup.script.R')
。此启动脚本设置
stringsAsFactors=FALSE
(以及完成其他任务)。这是可行的,但为了与其他人共享我的脚本,我必须共享感兴趣的脚本和我的
startup.script.R
script


我正在创建一个自定义包,它允许我共享自定义函数。我计划将
require(MyCustomFunctionsPackage)
(或类似的东西)放在所有脚本的开头,以便加载自定义函数。我想将
source('C:/…startup.script.R')
(或类似的东西)和
startup.script.R
文件嵌入
MyCustomFunctionsPackage
包中,这样,当我共享脚本时,我只需要通过调用
devtools::install\github来共享感兴趣的脚本('MyCustomFunctionsPackage'、'github_username')
我的所有自定义函数和设置都将被加载。有什么方法可以做到这一点吗?我肯定答案在或在某处,但我不确定要搜索哪些关键字。

您可以提供一个名为的函数,它将在加载包时被调用。下面是一个简单的可复制示例,演示如何使用它:

## 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
##创建并安装包含函数`.onLoad()的包`
图书馆(pkgKitten)
小猫(“myopts”)
猫(

“.onLoad可能对此意见不同,但我不希望我加载的包改变我的
stringsAsFactors
会话选项。如果一个包表现出这种行为,我不会使用它。如果您希望您的代码避免处理因子,可能最好在您的内部代码中手动处理它。这一点很好。我应该只处理在任何需要此代码的脚本中包含
选项(stringsAsFactors=FALSE)
的问题。在野外投票的
pkgKitten
:)也显示了
选项()
方法使问题在这个特定的环境中变得毫无意义。@DirkEddelbuettel-Hah!TBH,我的回答主要是为了证明用
kitten()制作一个包是多么容易。
来尝试一些代码/想法。但看起来我只是在向传教士布道;)