直到现在,我正在使用这段代码加载R包并编写.R文件。但我正在尝试使用knitr
rm (list=ls(all=TRUE))
kpacks <- c('ggplot2','install_github','devtools','mapdata')
new.packs <- kpacks[!(kpacks %in% installed.packages()[,"Package"])]
if(length(new.packs)) install.packages(new.packs)
lapply(kpacks, require, character.only=T)
remove(kpacks, new.packs)
options(max.print=5.5E5)
但是现在,当我把这段代码放在Knitr文档中时,我收到了这个错误:
Error in contrib.url(repos, "source") :
trying to use CRAN without setting a mirror calls:......
我该如何解决这个问题?
答案 0 :(得分:5)
您的问题的答案很简单,您应该设置repos
选项:
options(repos=c(CRAN="<something sensible near you>"))
您遇到问题是因为最初未设置存储库选项时R的默认行为是查询用户 - 当您运行代码时它无法执行此操作非交互。
更广泛地说,我会质疑你是否想在R代码中包含这类内容;在某些情况下,它可能会有问题。
我的首选做法是在运行代码的说明中指定用户应安装X,Y,Z软件包(并提供示例代码以安装它们,以防他们对R缺乏经验)。< / p>
答案 1 :(得分:1)
避免安装软件包的一种方法是执行类似
的操作if(!require(package.name))
stop("you need to install package.name")
在你的代码块中。根据您的knitr文档设置,这将在文档中,在控制台中生成消息,或者防止编织文档。