R語(yǔ)言中特殊值NaN、Inf 、NA、NULL

前言:
學(xué)習(xí)R過(guò)程中,數(shù)據(jù)中往往會(huì)出現(xiàn)一些詭異的符號(hào),而不是數(shù)值,那么他們到底是什么意思呢?下面帶領(lǐng)大家一探究竟。

(一) 特殊值的概念

1. NaN
R中的無(wú)定義數(shù)用NaN表示,即“Not a Number(非數(shù))”。
不過(guò)在R中,R實(shí)際上是把NaN視作一個(gè)數(shù)的,當(dāng)其參與運(yùn)算時(shí),返回結(jié)果總是NaN。我們可以使用is.nan()函數(shù)來(lái)檢測(cè)計(jì)算結(jié)果有無(wú)定義,但是需要注意的是,對(duì)于NaN而言,is.finite()和is.infinite()都會(huì)返回FALSE。

> 0/0
[1] NaN

2. NA
NA表示缺失值,即“Missing value”,是“not available”的縮寫(xiě)

> a <- c(1, 2, 3, 4)
> a[1:5]
[1]  1  2  3  4 NA

3. Inf
R中的無(wú)窮大用Inf表示(即Infinity,無(wú)窮大),負(fù)無(wú)窮表示為-Inf。
要檢查一個(gè)數(shù)是否為無(wú)窮,可以使用is.finite()或者is.infinite()函數(shù)

> 1/0
[1] Inf
> -1/0
[1] -Inf

3. NULL
R語(yǔ)言中,NA代表位置上的值為空,NULL代表連位置都沒(méi)有,變量為空,其長(zhǎng)度為0,表明“空無(wú)一物”

> a <- NULL
> a
NULL
> length(a)
[1] 0

(二) 實(shí)戰(zhàn)中處理無(wú)效數(shù)據(jù)

#設(shè)置sugar數(shù)據(jù)
> sugar <- matrix(1:25,5,5)
> sugar[1,] <- 0
> sugar[3,1] <- 0
> sugar
     [,1] [,2] [,3] [,4] [,5]
[1,]    0    0    0    0    0
[2,]    2    7   12   17   22
[3,]    0    8   13   18   23
[4,]    4    9   14   19   24
[5,]    5   10   15   20   25
#設(shè)置yeast數(shù)據(jù)
> yeast <- matrix(10:34,,5,5)
> yeast[3,] <- 0
> yeast[1,1] <- 0
> yeast
     [,1] [,2] [,3] [,4] [,5]
[1,]    0   11   12   13   14
[2,]   15   16   17   18   19
[3,]    0    0    0    0    0
[4,]   25   26   27   28   29
[5,]   30   31   32   33   34

將兩個(gè)數(shù)據(jù)進(jìn)行除法運(yùn)算

> foldchange <- sugar/yeast
> foldchange
          [,1]      [,2]      [,3]      [,4]      [,5]
[1,]       NaN 0.0000000 0.0000000 0.0000000 0.0000000
[2,] 0.1333333 0.4375000 0.7058824 0.9444444 1.1578947
[3,]       NaN       Inf       Inf       Inf       Inf
[4,] 0.1600000 0.3461538 0.5185185 0.6785714 0.8275862
[5,] 0.1666667 0.3225806 0.4687500 0.6060606 0.7352941
> log2_foldchange <- log2(sugar / yeast)
> log2_foldchange
          [,1]      [,2]       [,3]        [,4]       [,5]
[1,]       NaN      -Inf       -Inf        -Inf       -Inf
[2,] -2.906891 -1.192645 -0.5025003 -0.08246216  0.2115041
[3,]       NaN       Inf        Inf         Inf        Inf
[4,] -2.643856 -1.530515 -0.9475326 -0.55942741 -0.2730185
[5,] -2.584963 -1.632268 -1.0931094 -0.72246602 -0.4436067

而log2_foldchange就是我們需要的數(shù)據(jù),發(fā)現(xiàn)里面有許多 NaN、 -Inf 、Inf ,想辦法進(jìn)行數(shù)據(jù)清洗。

> yeast == 0 # 邏輯判斷數(shù)據(jù)中是否為0
      [,1]  [,2]  [,3]  [,4]  [,5]
[1,]  TRUE FALSE FALSE FALSE FALSE
[2,] FALSE FALSE FALSE FALSE FALSE
[3,]  TRUE  TRUE  TRUE  TRUE  TRUE
[4,] FALSE FALSE FALSE FALSE FALSE
[5,] FALSE FALSE FALSE FALSE FALSE
> log2_foldchange[yeast == 0] # 選擇里面判斷為0的數(shù)據(jù)
[1] NaN NaN Inf Inf Inf Inf
# 將無(wú)效值替換為0
> log2_foldchange[sugar == 0 | yeast == 0] <- 0
> log2_foldchange
          [,1]      [,2]       [,3]        [,4]       [,5]
[1,]  0.000000  0.000000  0.0000000  0.00000000  0.0000000
[2,] -2.906891 -1.192645 -0.5025003 -0.08246216  0.2115041
[3,]  0.000000  0.000000  0.0000000  0.00000000  0.0000000
[4,] -2.643856 -1.530515 -0.9475326 -0.55942741 -0.2730185
[5,] -2.584963 -1.632268 -1.0931094 -0.72246602 -0.4436067

都到這一步了,再繪制兩個(gè)圖形玩玩:

  1. hist圖
> hist(log2_foldchange, col = "red",  border = "black")
2018-10-07Rplot01.png
  1. 密度圖
> curve <- density(log2_foldchange)
> plot(curve, main = "understand the NaN Inf NA")
> polygon(curve, col = "Thistle", border = "red", lty =1 )
2018-10-07Rplot02.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第2章 基本語(yǔ)法 2.1 概述 基本句法和變量 語(yǔ)句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,569評(píng)論 0 13
  • {因?yàn)槲恼潞?,所以轉(zhuǎn)載?。R語(yǔ)言缺失值處理 2016-08-23 05:17砍柴問(wèn)樵夫 數(shù)據(jù)缺失有多種原因,而大...
    夢(mèng)醒啟程閱讀 20,017評(píng)論 2 11
  • 從網(wǎng)上找了一下,整理如下:NA:缺失數(shù)據(jù)NaN:無(wú)意義的數(shù),比如sqrt(-2), 0/0。Inf:正無(wú)窮大-In...
    luckstarjianshu閱讀 18,117評(píng)論 0 4
  • 問(wèn)題 你想正確處理NULL、NA (Not Available)、NaN(Not a Number)。 方案 你的...
    杏月阿六閱讀 2,018評(píng)論 0 2
  • 想寫(xiě)點(diǎn)什么,但打開(kāi)軟件,卻又想不出寫(xiě)什么,記流水賬的第三天......
    橙中橙閱讀 290評(píng)論 0 0

友情鏈接更多精彩內(nèi)容