0

我有一个从https://www.r-bloggers.com/fun-with-rprofile-and-customizing-r-startup/复制的 .Rprofile但是,当我加载我的 R 会话时,env$它们中的函数不会'不工作,功能不env完美,这里是一个例子:

sshhh <- function(a.package){
   suppressWarnings(suppressPackageStartupMessages(
   library(a.package, character.only=TRUE)))
}

 auto.loads <-c("dplyr", "ggplot2")

if(interactive()){
  invisible(sapply(auto.loads, sshhh))
 }

.env <- new.env()
attach(.env)

.env$unrowname <- function(x) {
 rownames(x) <- NULL
x 
}

.env$unfactor <- function(df){
 id <- sapply(df, is.factor)
 df[id] <- lapply(df[id], as.character)
 df
 }

message("n*** Successfully loaded .Rprofile ***n")

加载 R 后,我可以输入sshhh并显示该功能,但如果我输入unfactor它会显示object not found

有什么帮助吗?我应该把所有功能都放在我的工作区吗???

4

1 回答 1

1

它们在单独的环境中创建的功能被有意隐藏。这是为了保护他们免受调用rm(list=ls()).

从原始文章:

[第 58-59 行]:这将创建一个新的隐藏命名空间,我们可以在其中存储一些函数。我们需要这样做以使这些函数能够在对“rm(list=ls())”的调用中继续存在,这将删除所有内容在当前命名空间中。这篇博文 [1] 对此进行了精彩的描述。

要使用 unfactor 函数,您可以调用.env$unfactor().

如果您想使这些函数在全局命名空间中可用而不必引用.env,您可以简单地省略整个.env部分,只需按照与函数相同的方式添加sshhh函数。

[1] http://gettinggeneticsdone.blogspot.com.es/2013/07/customize-rprofile.html

于 2016-09-09T10:56:17.917 回答