循环和 If 语句来检查和加载包
Loop and If statement to check and load packages
为什么不要求获取包向量?还有一种方法可以为 install.package 和 BiocManager 拆分 pkg 吗?因此,如果使用 install.package 安装软件包失败,请检查 BiocManager?
错误:
[1] “字符串”
加载所需的包:我
print.default("trying to install", i) 错误:
无效的打印数字 -2147483648
此外: 警告信息:
1:在库中(包,lib.loc = lib.loc,character.only = TRUE,logical.return = TRUE,:
没有名为“i”的包
2:在 print.default("trying to install", i) 中:强制引入的 NAs
pkg <- c("stringr", "openxlsx")
for (i in pkg){
print(i)
if(require(i)){
print(i, "is loaded correctly")
} else{
print("trying to install", i)
install.packages(i)
if(require(i)){
print(i, "installed and loaded")
} else{
stop("could not install", i)
}
}
}
在那个 for
循环中 有 至少有 3 个错误。首先,缺少第一个 require
、
的参数
... 然后未能将 require
的 character.only
参数设置为 TRUE,以便 i
可以得到评估而不是作为包名称,(参见 ?require
参数部分)
...最后,无法在 print
调用中加入所需的字符值 paste
。 (参见 ?print.default
的参数部分。打印函数只打印它的第一个参数。它的第二个参数是位数,如控制台错误消息所述。)
pkg <- c("stringr", "openxlsx")
for (i in pkg){
print(i)
if(require(i, character.only=TRUE)){
print(paste(i, "is loaded correctly"))
} else{
print(paste("trying to install", i))
install.packages(i)
if(require(i, character.only=TRUE)){
print(paste(i, "installed and loaded"))
} else{
stop(paste("could not install", i))
}
}
}
我确实收到了:“警告消息:
在库中(包,lib.loc = lib.loc,character.only = TRUE,logical.return = TRUE,:
在我不理解的那个循环的第一个 运行 之后没有名为 'openxlsx' 的包(因为消息 [1] "openxlsx installed and loaded"
被打印,并且包确实安装并且可以加载。我'我猜这与函数内完成的这些活动有关,并且环境不匹配???当我删除 pkg:openxlsx 和 re-ran 我的代码时,我没有收到警告消息。
为什么不要求获取包向量?还有一种方法可以为 install.package 和 BiocManager 拆分 pkg 吗?因此,如果使用 install.package 安装软件包失败,请检查 BiocManager?
错误: [1] “字符串” 加载所需的包:我 print.default("trying to install", i) 错误: 无效的打印数字 -2147483648 此外: 警告信息: 1:在库中(包,lib.loc = lib.loc,character.only = TRUE,logical.return = TRUE,: 没有名为“i”的包 2:在 print.default("trying to install", i) 中:强制引入的 NAs
pkg <- c("stringr", "openxlsx")
for (i in pkg){
print(i)
if(require(i)){
print(i, "is loaded correctly")
} else{
print("trying to install", i)
install.packages(i)
if(require(i)){
print(i, "installed and loaded")
} else{
stop("could not install", i)
}
}
}
在那个 for
循环中 有 至少有 3 个错误。首先,缺少第一个 require
、
... 然后未能将 require
的 character.only
参数设置为 TRUE,以便 i
可以得到评估而不是作为包名称,(参见 ?require
参数部分)
...最后,无法在 print
调用中加入所需的字符值 paste
。 (参见 ?print.default
的参数部分。打印函数只打印它的第一个参数。它的第二个参数是位数,如控制台错误消息所述。)
pkg <- c("stringr", "openxlsx")
for (i in pkg){
print(i)
if(require(i, character.only=TRUE)){
print(paste(i, "is loaded correctly"))
} else{
print(paste("trying to install", i))
install.packages(i)
if(require(i, character.only=TRUE)){
print(paste(i, "installed and loaded"))
} else{
stop(paste("could not install", i))
}
}
}
我确实收到了:“警告消息:
在库中(包,lib.loc = lib.loc,character.only = TRUE,logical.return = TRUE,:
在我不理解的那个循环的第一个 运行 之后没有名为 'openxlsx' 的包(因为消息 [1] "openxlsx installed and loaded"
被打印,并且包确实安装并且可以加载。我'我猜这与函数内完成的这些活动有关,并且环境不匹配???当我删除 pkg:openxlsx 和 re-ran 我的代码时,我没有收到警告消息。