my code:
s<-function(v,k){
ifelse(k>length(v),print("error,k>length(v)"),return(v-k))
}
v=1:5
k=6
s(v,k)
输出:
> s(v,k)
[1] "error,k>length(v)"
[1] "error,k>length(v)"
为什么这次打印两次?感谢
我可以在这里使用某种错误处理程序吗?
答案 0 :(得分:1)
您正在函数中显式调用print
并返回值。如果将函数的结果分配给变量,则第二个&#34; print&#34;被抑制了。
> x <- s(v, k)
[1] "error,k>length(v)"
使用invisible
也可以实现这一点。
> invisible(s(v, k))
[1] "error,k>length(v)"