.Rprofile 中的函数在 .env 中找不到
functions in .Rprofile are not found with are in .env
我有一个从 https://www.r-bloggers.com/fun-with-rprofile-and-customizing-r-startup/ 复制的 .Rprofile 但是,当我加载我的 R 会话时,env$
中的函数不起作用,[=12 中的函数不工作=] 完美运行,这里有一个例子:
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
有什么帮助吗?我应该把所有的功能都放在我的工作区吗???
它们在单独的环境中创建的功能是有意隐藏的。这是为了保护他们免受对 rm(list=ls())
.
的调用
来自原文:
[Lines 58-59]: This creates a new hidden namespace that we can store
some functions in. We need to do this in order for these functions to
survive a call to “rm(list=ls())” which will remove everything in the
current namespace. This is described wonderfully in this blog post [1].
要使用 unfactor 函数,您可以调用 .env$unfactor()
。
如果您想让这些函数在全局命名空间中可用而不必引用 .env
,您可以简单地省略整个 .env
部分,然后按照与您相同的方式添加函数为 sshhh
函数做了。
[1] http://gettinggeneticsdone.blogspot.com.es/2013/07/customize-rprofile.html
我有一个从 https://www.r-bloggers.com/fun-with-rprofile-and-customizing-r-startup/ 复制的 .Rprofile 但是,当我加载我的 R 会话时,env$
中的函数不起作用,[=12 中的函数不工作=] 完美运行,这里有一个例子:
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
有什么帮助吗?我应该把所有的功能都放在我的工作区吗???
它们在单独的环境中创建的功能是有意隐藏的。这是为了保护他们免受对 rm(list=ls())
.
来自原文:
[Lines 58-59]: This creates a new hidden namespace that we can store some functions in. We need to do this in order for these functions to survive a call to “rm(list=ls())” which will remove everything in the current namespace. This is described wonderfully in this blog post [1].
要使用 unfactor 函数,您可以调用 .env$unfactor()
。
如果您想让这些函数在全局命名空间中可用而不必引用 .env
,您可以简单地省略整个 .env
部分,然后按照与您相同的方式添加函数为 sshhh
函数做了。
[1] http://gettinggeneticsdone.blogspot.com.es/2013/07/customize-rprofile.html