设置
灵感来源于此question
我在一个名为consoleR
的软件包中有一些工具。
在这个包中,一个setwd
函数屏蔽了base::setwd
,以便在提示符中显示当前目录,如下所示:
## file consoleR/R/setwd.R
#' @export
setwd <- function(...) {
base::setwd(...)
current_dir <- basename(getwd())
options(prompt = paste(current_dir, " > "))
}
字符串
我在.Rprofile
中的每个会话中加载该包:
## file ~/.Rprofile
if(interactive()) {
library(consoleR, warn.conflicts = FALSE)
setwd(getwd()) ## initializing the prompt
}
型
问题
当我从nix-terminal启动R时,一切正常,但当我启动RStudio时,我得到了一个无法解释的错误:
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
Error in base::setwd(...) : character argument expected
project_dir >
型
努力
然后我使用traceback()
,得到:
project_dir > traceback()
5: base::setwd(...) at setwd.R#10
4: setwd(owd)
3: .rs.onAvailablePackagesStale(reposString)
2: .rs.availablePackages()
1: .rs.rpc.discover_package_dependencies("353B2D06", ".R")
rstudio-available-packages-3178bc4c5ea9a2 >
型
请注意,在调用traceback
之前和之后,提示符显示的是另一个目录,而不是当前目录。
当前目录实际上是我的$HOME
目录。
这是怎么回事
1条答案
按热度按时间w8biq8rn1#
常规的
setwd
返回一个字符串或者NULL
是工作目录不可用。你的setwd
没有,因为最后一条语句是对options
的调用,它返回一个list
。因此,以下内容可能会解决此问题:字符串
编辑:
setwd
和options
的返回值通常用于在之后设置目录:型
然后,在您的示例中调用的
setwd
将获得一个解释错误消息的列表。