在使用下面的R编写非常简单的验证代码时,我更喜欢系统错误通知(即...中的错误)。放在字符串前面(例如n1 <= 0)。它使用一个简单的字符串执行此操作,但顺序正好相反,使用了一个连接的字符串。非常感谢你的帮助。
chk = function(n1,n2,n3){
if (n1 <= 0){
stop("n1 <=0")
}
if (n3 > n2){
stop(cat("n3(=", n3 ,")>n2(=", n2, ")\n"))
}
}
chk(0,1,2)
# prints --> Error in chk(0, 1, 2) : n1 <=0
chk(1,1,2)
# prints --> n3(= 2 )>n2(= 1 )
# Error in chk(1, 1, 2) : 发布于 2015-01-14 02:14:20
cat()函数会立即将其...参数输出到控制台,除非您选择不将其输出到控制台(使用file参数)。它的输出实际上不是字符串,而是NULL类。因为它在stop()之前被计算,所以它首先打印。
您可以通过用paste()替换cat()来解决此问题
chk = function(n1,n2,n3){
if (n1 <= 0){
stop("n1 <=0")
}
if (n3 > n2){
stop(paste("n3(=", n3 ,")>n2(=", n2, ")\n"))
}
}
chk(0,1,2)
# Error in chk(0, 1, 2) : n1 <=0
chk(1,1,2)
# Error in chk(1, 1, 2) : n3(= 2 )>n2(= 1 ) https://stackoverflow.com/questions/27928604
复制相似问题