我正在研究R项目中的一些函数,用于附加和分离包,并且我在让paste()
在detach()
函数内工作时遇到了麻烦(这最终将成为for循环的一部分):
> library(ggplot2)
> (.packages())
[1] "ggplot2" "stringr" "readr" "stats" "graphics"
[6] "grDevices" "utils" "datasets" "methods" "base"
> detach(paste("package", "ggplot2", sep = ":"), unload = TRUE)
Error in detach(paste("package", "ggplot2", sep = ":"), unload = TRUE) :
invalid 'name' argument
但是如果我这样做,它会很好:
> detach("package:ggplot2", unload = TRUE)
> (.packages())
[1] "stringr" "readr" "stats" "graphics" "grDevices"
[6] "utils" "datasets" "methods" "base"
和paste()
返回正确的东西:
> paste("package", "ggplot2", sep = ":")
[1] "package:ggplot2"
所以我不确定这里出了什么问题…
尝试添加character.only = TRUE
和force = TRUE
detach(paste("package", "ggplot2", sep = ":"), unload = TRUE, character.only = TRUE, force = TRUE)
可能会打印一些警告,但是会分离ggplot2
。