在使用R下载一个程序包的时,有时候会出现这种情况:
原因:这里的mask本意是“面罩”,引申“掩饰”,就是说有A包掩饰了B包(不一定B包时你需要的),只是系统在调取这个Hmisc包时,至少有A、B两个package里都出现同一个名字的函数/变量。我看的资料是说R作为一个开源软件,大佬们推的各种包可能会出现你命ABC函数,我也有ABC函数的情况,但R在调取ABC函数时是按照顺序来的,当找到自己需要的包时就可以了,只是会提示你重复的情况。
查看:是哪个函数重复? 输入命令 search() 可以看到出现如下的,base的包里重复了同个函数:format.pval, units
这个base包在本次操作中会被系统忽略掉,不过本次操作也不需要它
> search() #在出现警报命令后输入该命令查看
[1] ".GlobalEnv" "package:Hmisc" "tools:rstudio" "package:stats"
[5] "package:graphics" "package:grDevices" "package:utils" "package:datasets"
[9] "package:methods" "Autoloads" "package:base"
解决办法:
1)直接忽略。不影响后面的命令,但是在强迫症的人看来,那抹红色的字体总像仿佛码着整整齐齐的砖头中间凸出一行黑色。那么请看2)
2)忽略警报:输入命令
library(Hmisc,warn.conflicts = F)
但是输入后的结果如下,虽然没出现这个警报,但是,但是它已经在前面出现过了啊?! 就当做看不见吧,是这个意思吗?但是我重启R之后再加载Hmisc包,还是会有警报的。我不太理解这个消除警报的操作,对于了解自己电脑里的程序包有函数冲突的,可以先输入这个命令,再来加载程序包。
> library(Hmisc)
载入程辑包:‘Hmisc’
The following objects are masked from ‘package:base’:
format.pval, units
> library(Hmisc,warn.conflicts = F)
>
> library(Hmisc)
3) 替换法:有这个办法,但试用了没用,不适合新手
调用被遮盖的函数:在这里,被遮盖的函数有format.pval, units,输入命令
base::format.pval 就是 程序包名::·函数名
> base::units
function (x)
UseMethod("units")
> base::format.pval
function (pv, digits = max(1L, getOption("digits") - 2L), eps = .Machine$double.eps,
na.form = "NA", ...)
{
if ((has.na <- any(ina <- is.na(pv))))
pv <- pv[!ina]
r <- character(length(is0 <- pv < eps))
if (any(!is0)) {
rr <- pv <- pv[!is0]
expo <- floor(log10(ifelse(pv > 0, pv, 1e-50)))
fixp <- expo >= -3 | (expo == -4 & digits > 1)
if (any(fixp))
rr[fixp] <- format(pv[fixp], digits = digits, ...)
if (any(!fixp))
rr[!fixp] <- format(pv[!fixp], digits = digits, ...)
r[!is0] <- rr
}
if (any(is0)) {
digits <- max(1L, digits - 2L)
if (any(!is0)) {
nc <- max(nchar(rr, type = "w"))
if (digits > 1L && digits + 6L > nc)
digits <- max(1L, nc - 7L)
sep <- if (digits == 1L && nc <= 6L)
""
else " "
}
else sep <- if (digits == 1)
""
else " "
r[is0] <- paste("<", format(eps, digits = digits, ...),
sep = sep)
}
if (has.na) {
rok <- r
r <- character(length(ina))
r[!ina] <- rok
r[ina] <- na.form
}
r
}
结果出是出来了,但是对后面的影响是啥,还没继续探索,对新手操作这个已经算是满意的结果了,不会出现其他的下载报错