R语言%in%小测试

%in%小测试

%in%是生信技能树生信爆款入门课程R语言部分的讲到的一个重要知识点。
为加深理解,现在找一个数据集做下练习巩固,。

简单介绍

 %in%用来判断前面一个向量内的元素是否在后面一个向量中,返回布尔值

准备数据

> library(tidyverse)
> diamonds
# A tibble: 53,940 x 10
   carat cut       color clarity depth table price     x     y     z
   <dbl> <ord>     <ord> <ord>   <dbl> <dbl> <int> <dbl> <dbl> <dbl>
 1 0.23  Ideal     E     SI2      61.5    55   326  3.95  3.98  2.43
 2 0.21  Premium   E     SI1      59.8    61   326  3.89  3.84  2.31
 3 0.23  Good      E     VS1      56.9    65   327  4.05  4.07  2.31
 4 0.290 Premium   I     VS2      62.4    58   334  4.2   4.23  2.63
 5 0.31  Good      J     SI2      63.3    58   335  4.34  4.35  2.75
 6 0.24  Very Good J     VVS2     62.8    57   336  3.94  3.96  2.48
 7 0.24  Very Good I     VVS1     62.3    57   336  3.95  3.98  2.47
 8 0.26  Very Good H     SI1      61.9    55   337  4.07  4.11  2.53
 9 0.22  Fair      E     VS2      65.1    61   337  3.87  3.78  2.49
10 0.23  Very Good H     VS1      59.4    61   338  4     4.05  2.39
# ... with 53,930 more rows

生成2个向量

> x <- sort(unique(diamonds$carat)[1:10])
> x#10个数值
 [1] 0.20 0.21 0.22 0.23 0.24 0.26 0.29 0.30 0.31 0.32
> y <- x[1:5]
> y#5个数值
[1] 0.20 0.21 0.22 0.23 0.24

生成2个数据框

> a <- data.frame(cut = sort(unique(diamonds$price)[1:10]))
> a
   cut
1  326
2  327
3  334
4  335
5  336
6  337
7  338
8  339
9  340
10 342
> b <- data.frame(cut = sort(unique(diamonds$price)[1:5]))
> b
  cut
1 326
2 327
3 334
4 335
5 336

1.判断y中的元素是否都在x中

> y %in% x
[1] TRUE TRUE TRUE TRUE TRUE

2.判断x中的元素是否都在y中

> x %in% y
 [1]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE

3.提取x中与y相同的元素

> x[x %in% y]
[1] 0.20 0.21 0.22 0.23 0.24

4提取y中与x相同的元素

> y[y %in% x]
[1] 0.20 0.21 0.22 0.23 0.24

5.提取x中与y不相同的元素

> x[!(x %in% y)]
[1] 0.26 0.29 0.30 0.31 0.32
> #注意非符号“!”位于整个语句之前,而非%in%之前。
> #match函数与%in%的功能相似,都可以进行匹配操作。
> #不同的是:match函数返回的是索引(即匹配单元的位置号),%in%返回的是逻辑值(T&F)

6.找出数据框b中与a相同的元素

> b$cut[b$cut %in% a$cut]
[1] 326 327 334 335 336

7.找出数据框a中与b不同的元素

> a$cut[!(a$cut %in% b$cut)]
[1] 337 338 339 340 342

8.使用%in%计算下x中有多少个数值与y相同?

> sum(x %in% y)
[1] 5

9.使用%in%计算下x中有多少个数值与y不相同?

> sum(!(x %in% y))
[1] 5

10.将数据框a与b不同的元素都修改为100。

> a$cut[!(a$cut %in% b$cut)] <- 100
> a
   cut
1  326
2  327
3  334
4  335
5  336
6  100
7  100
8  100
9  100
10 100
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • R语言与数据挖掘:公式;数据;方法 R语言特征 对大小写敏感 通常,数字,字母,. 和 _都是允许的(在一些国家还...
    __一蓑烟雨__阅读 1,683评论 0 5
  • 《R语言入门》的读书笔记 本书的重点内容及感悟: 第一章 导言 1、R是一个有着统计分析功能及强大作图功能的软件系...
    格式化_001阅读 12,624评论 0 9
  • ->点击访问个人博客地址,相互交流学习<- 上一篇:[R语言——基础篇](https://www.jianshu....
    JackHCC阅读 4,526评论 0 1
  • 为了解决感兴趣的问题,我们首先必须解决一些数据管理方面的问题。 4.2 创建新变量 在典型的研究项目中,你可能需要...
    在雨中跳舞阅读 1,631评论 2 1
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,575评论 16 22