美文网首页
R语言中的那些小细节【一】

R语言中的那些小细节【一】

作者: Bio_Infor | 来源:发表于2022-06-22 15:52 被阅读0次
    NA与NULL的区别
    a <- c(1, 2, NA)
    b <- c(1, 2, NULL)
    
    sum(a)
    #> NA
    sum(a, na.rm = T)
    #> 3
    sum(b)
    #> 3
    

    最终结果表明,NA值如果在不添加na.rm=TRUE的情况下会使得我们的运算结果成为NA,而NULL不会影响我们的计算结果。之所以出现这样的结果是因为:NA表示数据集中的该数据遗失。而NULL表示不存在的值。

    subset()与直接索引的区别

    接上文:

    a[a > 1]
    #> 2 NA
    subset(a, a > 1)
    #> 2
    b[b > 1]
    #> 2
    subset(b, b > 1)
    #> 2
    

    差别在于,只要有NA的存在,无论怎么直接索引,NA值都会出现在结果当中,此时解决办法可以尝试使用subset()函数。

    善用all()与any()函数
    a <- c(3, 4, 5, 6)
    all(a > 1)
    #等效于:sum(a > 1) == length(a)
    any(a > 5)
    #等效于:sum(a > 5) != 0
    

    这两个小函数可以帮助我们“笼统”判断一个向量中元素的情况,可以替代我们平时所写的sum()语句。

    矩阵与向量的混合运算
    a <- matrix(1:4, ncol = 2)
    #     [,1] [,2]
    #[1,]    1    3
    #[2,]    2    4
    a + 1:4
    #     [,1] [,2]
    #[1,]    2    6
    #[2,]    4    8
    

    实际上,矩阵也可以被理解为一个向量,当矩阵与向量进行运算时,向量会自动变成按列进行储存的矩阵了。

    向量输入,矩阵输出

    背景很简单,当我们对向量进行了某种操作后,最终输出的结果我们想以矩阵的形式进行展示,也就是每个元素及其对应的运算结果处在矩阵的一行或者一列之中:

    a <- 1:4
    fun <- function(x) return(c(x, x^2))
    matrix(fun(a), ncol = 2)
    #     [,1] [,2]
    #[1,]    1    1
    #[2,]    2    4
    #[3,]    3    9
    #[4,]    4   16
    sapply(a, FUN = fun)
    #     [,1] [,2] [,3] [,4]
    #[1,]    1    2    3    4
    #[2,]    1    4    9   16
    

    使用sapply()函数就达到了我们的目的,区别只是在于需要转置(t())一下就可以了。

    相关文章

      网友评论

          本文标题:R语言中的那些小细节【一】

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