美文网首页
R中常用知识汇总

R中常用知识汇总

作者: 一只烟酒僧 | 来源:发表于2020-07-21 11:50 被阅读0次

    1、R中的错误识别
    2、R中的循环控制
    3、xpath及爬虫总结
    参考链接:
    try的使用:https://blog.csdn.net/YJJ18636810884/article/details/83176190
    tryCatch的使用1:https://blog.csdn.net/weixin_41929524/article/details/84667843
    tryCatch的使用2:https://www.jianshu.com/p/99e21e018ae3

    一、R中的错误识别

    背景:

    在进行循环计算时,有可能输入存在异常或公式存在bug,导致部分输入值报错,从而终止循环,而这种现象的逐一排查是困难且耗时的,因此我们需要能够识别循环过程中的error,并完成:1、对错误进行合适的判断及后续处理,2、保证错误的出现不影响后续的循环的继续进行。R中有两个函数可以做到如此功能
    try():在可能存在错误的代码中使用fit=try(代码),如果多行代码就使用fit=try({代码}),该函数会返回一个‘try-error'类的对象,因此可以通过if('try-error'%in%class(fit)){next(或者break)}来决定循环的进行或终止
    tryCatch():有时我们需要对不同的报告类型(error,warning)做出不同处理时,可以使用tryCatch(需要捕捉的表达式, error = 错误时触发的函数式, finally = 不管error/正常运行/warning最终一定要运行的函数式)

    对于tryCatch的举例:

    divide <- function(x, y) {
      result <- tryCatch({
        x / y
      }, warning = function(war) {
        cat("warning!", war, "\n")
      }, error = function(err) {
        cat("error!", err, "\n")
      }, finally = {
        print("executing finally clause")
      })
      
      return(result)
    }
    

    二、R语言中的循环控制

    1、两类循环语句,for和while

    for:循环执行语句,直到某个变量不在指定范围为止(有限或确定范围内的循环)

    for (i in 1:10)  print("Hello")
    

    while:循环执行语句,直到条件不为真为止(可以是无限范围,更像是条件控制下的循环),需要在循环体中重赋值变量!

    i <- 10
    while (i > 0) {print("Hello"); i <- i - 1}
    

    2、两个循环控制语句,next和break

    参考链接:
    https://baijiahao.baidu.com/s?id=1610772171650448266&wfr=spider&for=pc
    next:结束本次循环中next后的语句,继续进行下一次循环
    图中所示的在循环体中,next前和后都有语句,当执行遇到next时,循环体中next后面的语句不会被执行到,而是跳转到循环体中的第一个语句执行,或者判断循环体的条件是否满足以进行下一次循环

    next
    break:结束全部循环,直接跳出!
    由图可以看出,在循环体中如果遇到了break,则执行会从循环体中跳出,执行循环体后面的语句(不会再进入循环体中)。这个用法在repeat语句中是非常有用的,否则repeat会陷入死循环。
    break

    三、Xpath及爬虫总结

    Xpath学习:https://www.w3school.com.cn/xpath/xpath_axes.asp
    https://www.cnblogs.com/jingdenghuakai/p/11078780.html
    xpath中的轴的使用、节点条件选择和部分函数的使用总结
    1、轴
    ancestor: 选取当前节点的所有先辈(父、祖父等)。
    ancestor-or-self: 选取当前节点的所有先辈(父、祖父等)以及当前节点本身。
    attribute: 选取当前节点的所有属性。
    child:选取当前节点的所有子元素。
    descendant: 选取当前节点的所有后代元素(子、孙等)。
    descendant-or-self: 选取当前节点的所有后代元素(子、孙等)以及当前节点本身。
    following: 选取文档中当前节点的结束标签之后的所有节点。
    namespace: 选取当前节点的所有命名空间节点。
    parent: 选取当前节点的父节点。
    preceding: 选取文档中当前节点的开始标签之前的所有节点。
    preceding-sibling: 选取当前节点之前的所有同级节点。
    self: 选取当前节点。

    常用节点表示

    //div/parent::a 寻找div节点的父节点,父节点的名称是a
    //div/child::a 寻找div节点的子节点,子节点的名称是a
    //div/following-sibling::a 寻找div节点的同级节点,该同级节点在div节点之后,该同级节点的名称是a
    //div/preceding-sibling::a 寻找div节点的同级节点,该同级节点在div节点之前,该同级节点的名称是a

    2、节点的条件选择
    根据节点的不同的属性值来从同名节点中挑选需要的节点,一般使用[]进行条件选取
    常用的条件选择

    //div[@class="xxx"] 选择class属性为xxx的名为div的节点
    //div[text()="xxx"] 选择text属性为xxx的名为div的节点

    3、部分函数的总结
    最常用的是contains和属性连用来选择包含某些信息的节点
    常用的方式

    //div[contains(@id,"w")] 选取id属性中包含w的名为div的节点
    //div[contains(text(),"w")] 选取text属性中包含w的名为div的节点

    4、使用rvest的爬虫总结

    html_session(url)%>%read_html()%>%html_nodes(xpath=xpath)%>%html_attr(name=name)|%>%html_text()

    相关文章

      网友评论

          本文标题:R中常用知识汇总

          本文链接:https://www.haomeiwen.com/subject/bcxikktx.html