R语言系列5 | 变量类型4-向量4

在拿到一组数据的时候,我们经常会对特定的值进行筛选,或者想看看数据中是不是有NA值以及排查数据是不是都大于或者小于某值。

过去的文章里,我们从向量的创建和增删改查开始讲解,一直到取向量的长度以及使用各种方法创建我们需要的向量。其中最重要的莫过于上文讲的创建重复向量和等差数列了。

而我们真正做数据处理的时候大多数都是先读取数据,然后才会进行处理,而读取了数据以后,我们需要重点考虑以下的问题。我们的数据的某列是不是都大于一个定值?数据某列是不是有小于某个值的观测,如果没有那我也不需要进行下一步处理了。。。此外,本文还将简单介绍关于NA和NULL的概念。接下来,就开始今天的内容吧!

NA和NULL

NA值和NULL值都是我们常常听说的概念,我们经常称呼它们一个为缺失值,一个为空值,但是具体何为缺失值,何为空值呢?在分析过程中,它们对我们的结果有什么影响呢?

NA值,其实是一个缩写,它的全名叫做Not Available,也就是缺失的值,使用一个简单的例子给大家生成一个NA值,

> a <- 1:3
> a[1:5]
[1]  1  2  3 NA NA

我们使用上面的方法就能产生NA了,我们向量长度只有3但是我们的索引值给到了4和5,R解释器想了想,我没有这两个索引位置的值啊,也就是这两个位置的值是缺失的,所以给你返回了缺失值NA.

我们平时读取数据的时候要万分小心数据中是不是有缺失值,不然会对运算造成巨大的影响,下面给出案例

> b <- a[1:5]
> mean(b)
[1] NA
> mean(a)
[1] 2

我们可以发现,如果我们的数据有NA值,那么运算函数就会直接返回NA,没法计算,因为它是个缺失的值。

至于怎么处理,也很简单,指定na.rm参数即可,

> mean(b,na.rm = T)
[1] 2

上面就是关于NA的简单介绍,后面还会专门讲解NA的处理,关于如何填充NA值,如何移除NA值等等,后面的小节2将讲解如何看向量中有没有NA值。

下面介绍NULL,NULL,就是空值,什么都没有,就是空。下面给个例子看看NULL和NA的区别

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

我们可以看到,如果你给向量复制NULL和NA,你就会发现,NULL长度是0,也就是什么都没有,而NA的长度是一,表明虽然你缺失了,但是至少这里还有个东西。

另外一点不同的是,NULL不会对你的运算产生影响

> a <- c(1,2,3,NULL)
> mean(a)
[1] 2
> length(a)
[1] 3

包含NULL的向量是可以运算的,而且重要的是NULL本身不占位,计算均值的时候长度为3,不是4。

而NULL有什么用呢,它空无一物,也不占位,也代表不了这里也许曾经有个值(NA)。如果大家写过c或者cpp,大家可能就知道,使用一个变量之前先声明一下,R是没有这种规则的。但是当你想使用循环捕获值的时候,你必须进行初始化操作,这个时候NULL就会起作用了。(后面循环的时候有讲解)

Any函数

上文说过,读取了一组数据,我们经常关心某一列是不是有特定的值范围,我们这个时候可以使用筛选的操作进行处理,然后拿到结果,不过这就太麻烦了,浪费时间和内存。

R给我们提供了一个内置函数 - Any函数,它可以让我们了解到向量里的任一个值是不是满足一个条件,听着是不是很拗口呢,下面给几个例子就好了

> d <- 1:20
> any(d > 1)
[1] TRUE
> any(d < 100)
[1] TRUE
> any(d < 5)
[1] TRUE
> any(d == 10)
[1] TRUE
> any(d < 0)
[1] FALSE

这就是我们的any函数,它可以让我i们快速的了解到,我们的向量里是不是有这样的一个值,满足给定条件,只要至少有一个,那么就返回T,否则返回F

我们对any的使用除了读取数据后查看一下,另外就是进行判断IF语句的时候会用到它,后面使用到的时候大家要知道是怎么回事。

All函数

最后,我们来讲解一下all函数,all函数可以说是any函数的相反的函数。它的功能和any函数正好相反,它可以查看向量里所有值都满足给定条件,只要至少有一个不满足,那么就返回F,否则返回T.

给出点案例看一看

> d <- 1:20
> all(d < 2)
[1] FALSE
> all(d > 5)
[1] FALSE
> all(d > 1)
[1] FALSE
> all(d > 0)
[1] TRUE
> all(d == 16)
[1] FALSE

我们发现大多数都是False,只有我们的d>0的时候返回了True,因为我们所有的值都是大于0的,所以才会返回T。

我们的all函数其实是个比较严酷的筛选,有的时候我们写程序会进行异常处理,抛出异常,这个时候all函数也会有一席之地,看看运算结果是什么样的,如果有不正常的影响了后续处理,就抛出异常,停止代码。

以上就是今天的所有内容了,是不是非常的简单呢?any和all,大家知道i有这两个概念即可,但是NA和NULL都是很重要的概念,进行数据分析和处理会经常和这两个值,以及后面会讲到的NaN Inf值,所以一定要知道对我们的运算产生什么影响,如果做简单的处理,才能在实操中得心应手。

下次内容更精彩哦,关注不迷路!

如果你喜欢我的文章,请收藏我的文章并且给我个赞,你的支持就是我更新的最大的动力,关注我会有更多惊喜哦,专注于生物信息学以及数据分析入门和进阶教程,也许我给不了你从10-100,但是我可以给你最好的从0-10!

最后,关注我的公众号,领取更多学习资料吧!!!

打开v搜索,”轻松玩转生信“或者从下面文章进去获取二维码关注哦

二维码传送门

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

推荐阅读更多精彩内容