我在R中创建了一些函数,每当我需要这些函数时,我都需要重新创建它。请建议我的方式和步骤,以便我可以直接在R的任何会话中使用这些功能而无需重新创建它们。
答案 0 :(得分:3)
虽然Carl的回答是可以接受的,但我个人认为这正是您应该打包函数并将它们称为库的情况。
有很好的理由这样做:
library(mypackage)
)答案 1 :(得分:0)
我在所有会话中都需要一系列功能。诀窍是将它们添加到.First文件中,以便它们全部来源于每个会话。
帮助函数找到你的第一个文件
find.first <- function(edit = FALSE, show_lib = TRUE){
candidates <- c(Sys.getenv("R_PROFILE"),
file.path(Sys.getenv("R_HOME"), "etc", "Rprofile.site"),
Sys.getenv("R_PROFILE_USER"),
file.path(getwd(), ".Rprofile")
)
first_hit <- Filter(file.exists, candidates)
if(show_lib & !edit){
return(first_hit)
}else {
file.edit(first_hit)
}
}
假设您在任何地方使用的脚本都在'/ mystuff / R'
中# Pop open the first Rprofile file.
find.first(edit = TRUE)
你会看到这样的事情:
##Emacs please make this -*- R -*-
## empty Rprofile.site for R on Debian
##
## Copyright (C) 2008 Dirk Eddelbuettel and GPL'ed
##
## see help(Startup) for documentation on ~/.Rprofile and Rprofile.site
# ## Example of .Rprofile
# options(width=65, digits=5)
# options(show.signif.stars=FALSE)
# setHook(packageEvent("grDevices", "onLoad"),
# function(...) grDevices::ps.options(horizontal=FALSE))
# set.seed(1234)
#.First <- function(){}
#
#
将功能编辑为:
.First <- function(){
all_my_r <- list.files('/mystuff/R', full.names = T,
recursive = T, pattern = ".R$" )
lapply(all_my_r, function(i){
tryCatch(source(i), error = function(e)NULL)
})
}
保存文件。然后重启会话。