我在.Rprofile文件中放置了一个函数,但它没有';当我加载R时,是否不显示?我不知道';我不明白为什么

我在.Rprofile文件中放置了一个函数,但它没有';当我加载R时,是否不显示?我不知道';我不明白为什么,r,R,我的.Rprofile文件如下所示: # Will be run at the start of an R sesssion # ----------------------------------------- .First <- function(){ # Set the default CRAN CRAN <- "http://cran.ma.imperial.ac.uk/" # Load standard libraries library(H

我的.Rprofile文件如下所示:

# Will be run at the start of an R sesssion
# -----------------------------------------
.First <- function(){
    # Set the default CRAN
    CRAN <- "http://cran.ma.imperial.ac.uk/"
    # Load standard libraries
    library(Hmisc)




    # My functions
    # ------------
    # R version of lookfor: `names(data)[grep('pattern',names(data))]`

    lkf <- function(d,p) names(d)[grep(p,names(d))]
    cat("\nWelcome at", date(), "\n")

}

# Will be run at the end of an R sesssion
# -----------------------------------------

.Last <- function(){
     cat("\nGoodbye at ", date(), "\n")
}

我做错了什么?

启动

接下来,如果在搜索路径上找到函数
.First
,它将作为
.First()

因此,与任何其他函数一样,
lkf
将在函数的环境中创建,该环境在函数退出时被销毁

相反,您可以在
外部定义
lkf

lkf <- function(d,p) grep(p, names(d), value = TRUE)

.First <- function() {
   [...]
}

谢谢。您是否愿意就R用户是否推荐我的方法发表评论?人们通常会编写一些助手函数,然后在R启动时加载吗?@drstevok我建议您构建自己的库,并在需要时使用它。当然。使用.Rprofile是非常常见的做法。但是,如果您计划共享您的代码,它可能会妨碍可复制的研究:想象一下,如果您向我们发送包含对
lkf
调用的代码,我们将无法轻松访问其定义(.Rprofile是您的个人和隐藏文件。)。因此.Rprofile非常适合您只计划使用的东西,以使您的生活更轻松。@Tim谢谢。这是我听到的,但我不知道该怎么做。你有任何链接或指针吗?也许是一个示例包?
lkf <- function(d,p) grep(p, names(d), value = TRUE)

.First <- function() {
   [...]
}