R语言中特殊值NaN、Inf 、NA、NULL

前言:
学习R过程中,数据中往往会出现一些诡异的符号,而不是数值,那么他们到底是什么意思呢?下面带领大家一探究竟。

(一) 特殊值的概念

1. NaN
R中的无定义数用NaN表示,即“Not a Number(非数)”。
不过在R中,R实际上是把NaN视作一个数的,当其参与运算时,返回结果总是NaN。我们可以使用is.nan()函数来检测计算结果有无定义,但是需要注意的是,对于NaN而言,is.finite()和is.infinite()都会返回FALSE。

> 0/0
[1] NaN

2. NA
NA表示缺失值,即“Missing value”,是“not available”的缩写

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

3. Inf
R中的无穷大用Inf表示(即Infinity,无穷大),负无穷表示为-Inf。
要检查一个数是否为无穷,可以使用is.finite()或者is.infinite()函数

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

3. NULL
R语言中,NA代表位置上的值为空,NULL代表连位置都没有,变量为空,其长度为0,表明“空无一物”

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

(二) 实战中处理无效数据

#设置sugar数据
> 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
#设置yeast数据
> 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

将两个数据进行除法运算

> 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就是我们需要的数据,发现里面有许多 NaN、 -Inf 、Inf ,想办法进行数据清洗。

> yeast == 0 # 逻辑判断数据中是否为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的数据
[1] NaN NaN Inf Inf Inf Inf
# 将无效值替换为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

都到这一步了,再绘制两个图形玩玩:

  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
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,057评论 0 13
  • {因为文章好,所以转载!!}R语言缺失值处理 2016-08-23 05:17砍柴问樵夫 数据缺失有多种原因,而大...
    梦醒启程阅读 19,100评论 2 11
  • 从网上找了一下,整理如下:NA:缺失数据NaN:无意义的数,比如sqrt(-2), 0/0。Inf:正无穷大-In...
    luckstarjianshu阅读 17,555评论 0 4
  • 问题 你想正确处理NULL、NA (Not Available)、NaN(Not a Number)。 方案 你的...
    杏月阿六阅读 1,876评论 0 2
  • 想写点什么,但打开软件,却又想不出写什么,记流水账的第三天......
    橙中橙阅读 141评论 0 0