当前位置:  开发笔记 > 编程语言 > 正文

相当于R中的"throw"

如何解决《相当于R中的"throw"》经验,为你挑选了3个好方法。

如何在R中"抛出"错误?我有一个函数,它采用数据框和一些列名称,并用它们做的事情.如果列不存在,我希望函数停止并根据它停止所有函数.

我已经看过recoverbrowsetraceback,但同时,他们似乎是接近,但不是我所期待的.



1> Dirk Eddelbu..:

help(tryCatch):

条件由' signalCondition'表示.此外,
' stop'和' warning'函数已被修改为也接受
条件参数.

后来在'See Also'下:

' stop'和' warning'信号条件,' try'基本上是' '的简化版本tryCatch.

所以你可能想要stop.


这非常有效.R是如此奇怪,没有他们自己的错 - 它是在我们解决良好的解释性语言设计之前设计的.
这里的一些基本例子很棒,不仅有引用.这里http://stackoverflow.com/a/23917007/54964
据作者说,它深受Scheme的影响,它既古老又好.R是'lispy'但具有时髦的数据结构.R中的"有趣"部分可能与许多约定与其他语言不同,特别是C语言家族,它在语法上也很接近.我猜是因为语言是由一群需要一个好工具的统计学家演变而来的,而不是开发人员需要一个好工具.事实上,'点'只是一个角色需要很长时间才能接受.

2> 小智..:

简单的例子:

f <- function(a, b){ 

    if (a == 0){ 
            stop("error message")
    }
 }



3> Shane..:

除了Dirk提到的基本功能:

该R.oo包具有附加的异常处理的功能,包括掷()函数,它是非常有用的.您可以使用常用的try或trycatch函数捕获异常:

> try(throw("Division by zero.")); print("It's ok!");
Error: [2009-10-22 10:24:07] Exception: Division by zero.
[1] "It's ok!"

你可以在这里阅读更多相关信息:http://www1.maths.lth.se/help/R/R.oo/


呵呵.没有OO,R不够时髦吗?很抱歉要翻转,非常感谢有趣的回答,但我会选择上面的普通老站().
通常,"单行的力量"不是语言的良好指标.对于我们许多人来说,可理解的代码胜过少行.事实上,对我来说很难理解,因为我是初学者,我试图相应地校准期望.但是其他语言使得从0到完成任务变得非常直观.R似乎也开发了一种聪明,难以阅读的单行文化.我会争论一种最像英语的代码文化,它通常也可以像Ruby那样是单行代码.
@ws.R有什么好玩的?`plot`绘制一个函数,`try``st停止``警告`所有工作正如你所期望的那样,几乎我想做的一切都是单行.
推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有