干货分享 | R-数据处理基础篇-一篇概括R语言中的基础逻辑命令,够用!
The following article is from TheWhoOPs Author 申泽西
目录
0.问题导入
1.布尔变量
2.If...else if...else
3.which函数中布尔变量的应用及 "且或非"的布尔状态
4.总结
5.致谢
6.号外!TheWhoOPs平台与全国地研联公众号实现线上战略合作
0. 问题导入
近些年,神经网络,机器学习,计算机视觉等技术大火,而其背后最基础的原理即是教会计算机根据某些特征识别图像或是信号中的某些模式,其中识别二字最基础的就是各个语言体系中的逻辑判断。
今天这一篇以5-10分钟的阅读时间向大家介绍下R语言中基础的逻辑命令及其用法~
为了方便大家学习,大家可以在【TheWhoOPs】公众号平台回复“布尔变量”获得本篇对应的R脚本文件哈~
1. 布尔变量
布尔变量,英文又称boolean,一般存在形式为TRUE / FALSE,或是简称T / F。类似于灯的开与关。
那么这是不是意味着在R语言体系中,布尔变量只有 TRUE (T) / FALSE(F) 这一种存在形式呢?当然不是,我们可以通过赋值的方式生成内涵TRUE或者FALSE的布尔变量,例如:
pos_tell = Tneg_tell = F
2. if...else
当我们有了布尔变量,即类似于在家里安装了一个开关。而这个开关到底可以完成什么操作,这就需要 if...else if...else 来具体设置条件下的动作。
以最近的疫情状态来决定出门状态为例,我们可以构建一个判断函数:
特别注意,在构建判断条件的时候,我们需要用“==”而不是“=”
travel_condition_tell <- function(disease_condition){if(disease_condition == 'dangerous'){
return(paste0("Travel is not suggested! Stay at home safely!"))
}else if(disease_condition == 'moderate'){
return(paste0('Travel with mask on!'))
}else if(disease_condition == 'safe'){
return(paste0('Travel?! Go to WORK, said by your sincere BOSS!'))
}
}
这里呢,我们设置disease_condition(布尔变量)为三个可能的状态:
1. dangerous (危险)
2. moderate (中等)
3. safe (安全)
分别对应了三个可能的出门状态:
1. Travel is not suggested! Stay at home safely! 不建议出门,还是待在家里安全!
2. Travel with mask on! 出门戴口罩
3. Travel?! Go to WORK, said by your sincere BOSS!' 外出游玩?确定不会被喊回去工作?
下面我们可以将这个函数根据上一篇的函数创建操作进行保存,或是直接拖进命令行加回车,然后给其赋不同的状态,来实现外出建议的推荐。
travel_condition_tell('dangerous')[1] "Travel is not suggested! Stay at home safely!"
travel_condition_tell('moderate')
[1] "Travel with mask on!"
travel_condition_tell('safe')
[1] "Travel?! Go to WORK, may say by your sincere BOSS!"
3. which函数中布尔变量的应用及 "且或非"的布尔状态
基于布尔变量的逻辑判断除了可以通过传统的if...else if...else 结构来完成,还可以将判断条件作为输入变量,来完成一定类型的筛选。本篇以which函数为例,简单示范下基于布尔变量的逻辑判断的基本应用。同时,也基于此简单介绍下并列布尔关系及非关系的应用。
3.1 随机生成一个长度为100,值域为1-10的整数序列
a = round(runif(100,1,10))a
[1] 4 4 1 5 6 8 2 7 6 4 6 1 3 4 4 8 8 5 7 5 7 5 7
[24] 4 5 7 8 8 9 7 8 3 9 8 2 7 8 6 5 7 3 6 9 3 3 7
[47] 7 6 10 4 8 8 8 5 3 9 4 10 6 9 8 7 1 6 4 2 10 7 6
[70] 2 7 10 7 6 5 4 7 8 5 7 7 1 10 7 9 8 3 9 8 1 5 5
[93] 5 8 6 2 5 5 9 7
3.2 单筛选条件-筛选序列中大于5的值
a_over5 = a[which(a > 5)]print(length(a_over5))
[1] 59
3.3 双筛选条件-筛选序列中大于5的值或小于3的值
这块需要注意的是判断条件中 “或”关系的表达符号为 “ | ”。
a_over5less3 = a[which(a > 5 | a <3)]a_over5less3
[1] 1 6 8 2 7 6 6 1 8 8 7 7 7 7 8 8 9 7 8 9 8 2 7
[24] 8 6 7 6 9 7 7 6 10 8 8 8 9 10 6 9 8 7 1 6 2 10 7
[47] 6 2 7 10 7 6 7 8 7 7 1 10 7 9 8 9 8 1 8 6 2 9 7
print(length(a_over5less3))
[1] 69
3.4 双筛选条件-筛选序列中大于等于5的值且小于等于7的值
这块需要注意的是判断条件中 “且”关系的表达符号为 “ & ”;大于等于符号为“>=”;小于等于符号为"<="。
a_over5less7 = a[which(a >= 5 & a <=7)]a_over5less7
[1] 5 6 7 6 6 5 7 5 7 5 7 5 7 7 7 6 5 7 6 7 7 6 5 6 7 6 7 6 7 7 6 5 7 5 7
[36] 7 7 5 5 5 6 5 5 7
print(length(a_over5less7))
[1] 44
3.5 非筛选条件-筛选序列中不等于5的值
这块需要注意的是判断条件中 “非” 关系的表达符号为 “ != ”
a_not_equal_5 = a[which(a != 5)]a_not_equal_5
[1] 4 4 1 6 8 2 7 6 4 6 1 3 4 4 8 8 7 7 7 4 7 8 8
[24] 9 7 8 3 9 8 2 7 8 6 7 3 6 9 3 3 7 7 6 10 4 8 8
[47] 8 3 9 4 10 6 9 8 7 1 6 4 2 10 7 6 2 7 10 7 6 4 7
[70] 8 7 7 1 10 7 9 8 3 9 8 1 8 6 2 9 7
print(length(a_not_equal_5))
[1] 86
4. 总结
本篇主要讲解了以下几个问题:
什么是布尔变量?及布尔变量的定义方式?
如何基于if...else if...else 构建多条件逻辑判断式?
如何基于逻辑判断式采用which()函数在一个序列中筛选满足条件的变量?
如何在R中构建“且或非”等逻辑判断?
当然,布尔变量及逻辑判断应用还有很多?愿大家以本篇为引,在R语言数据处理的平台上大展身手!
5. 致谢
首先,感谢大家的持续关注,小编会继续努力,持续更新下去的!
大家如果觉得有帮助啊,还麻烦大家关注点赞,也可以扩散到朋友圈,多多引导朋友加入咱们这个简书技术平台, 代码共享推动科研进程, 多谢大家啦~
大家如果在使用本代码的过程有遇到问题的,可以留言评论,也可以私信我哈~~
祝大家身体健康,多多保重!!
扫描二维码
获取Jersey
联系方式
6. 号外!TheWhoOPs平台与全国地研联公众号实现线上战略合作
这是与全国地研联联合推出的第三篇R语言技术推文-基础篇。
从2020年2月10日起,TheWhoOPs技术公众号将与全国地理学研究生联合会公众号(简称地研联)公众号实现全面线上合作。
合作内容主要包括为周一,三,五的R语言数据数据分析及可视化文章的线上共享发布及每周日的b站技术直播讲解(地研联b站账号)。
如果大家觉得有帮助还劳烦多多帮忙宣传下哈!!
责任编辑:张英浩
审核:王波涛
终审:顾伟男 田巍 梁龙武
猜你喜欢
1.干货分享 | R-数据处理基础篇-一篇概括总结R语言变量储存结构
2.地学快讯 | 热烈庆祝全国地研联公众号与TheWhoOPs技术公众号实现战略合作
4.佳文赏析 | Nature Reviews Earth & Environment:全球植被变绿的特征、驱动因素及其气候反馈
5.干货分享 | R-ggplot2-如何在时空尺度展示各省份的兴趣数据