我有一个。{Rprofile我已经从https://www.r-bloggers.com/fun-with-rprofile-and-customizing-r-startup/复制了但是,当我加载我的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
有任何帮助吗?我应该把所有功能都放在我的工作区吗?
答案 0 :(得分: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