在R的较新版本(我有3.6,以前是3.2)中,stats::regularize
。values函数已更改为默认值warn.collapsing为TRUE。此函数用在splinefun
和R中的其他几个插值函数中。在微仿真模型中,我使用splinefun
来平滑(x, f(x))。在此,x是正值缩放器的模拟向量,而f(x)是(x)的某些函数。当n很大时,通常会复制一些伪随机生成的值(即,并非x的所有值都是唯一的)。我的理解是splinefun
摆脱了x值的束缚。这对我来说不是问题,但是由于采用了新的默认设置,因此每次(如下)我都会收到一条警告消息打印
“在regularize.values(x,y,关系,丢失(关系))中:折叠为 唯一的“ x”值”
是否可以将stats::regularize.values
函数的warn.collapsing参数的默认值更改回F?还是我可以以某种方式禁止该警告?这很重要,因为它嵌入了很长的微仿真代码中,当我对其进行更新时,我经常会遇到错误。因此,我不能只是忽略警告消息。
我尝试使用形式化功能。我能够打印出stats::regularize.values
的默认参数,但是当我尝试使用alist
函数分配新值时,它说没有对象'stats'。
答案 0 :(得分:3)
我也遇到了这个问题,并通过将ties=min
添加到splinefun()
的参数列表来解决此问题。
missing(ties)
的值现在作为warn.collapsing
传递给regularize.values()
。
https://svn.r-project.org/R/trunk/src/library/stats/R/splinefun.R
https://svn.r-project.org/R/trunk/src/library/stats/R/approx.R
另请参阅:
https://cran.r-project.org/doc/manuals/r-release/NEWS.html
并搜索regularize.values()
。
答案 1 :(得分:0)
像这样包装您对regularize.values
的呼叫:
withCallingHandlers(regularize.values(x), warning = function(w){
if (grepl("collapsing to unique 'x' values", w$message))
invokeRestart("muffleWarning")
})
工作示例(从上面的链接改编为调用函数):
f1 <- function(){
x <- 1:10
x + 1:3
}
f1()
# if we just call f1() we get a warning
Warning in x + 1:3 :
longer object length is not a multiple of shorter object length
[1] 2 4 6 5 7 9 8 10 12 11
withCallingHandlers(f1(), warning=function(w){invokeRestart("muffleWarning")})
[1] 2 4 6 5 7 9 8 10 12 11