前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2023.4生信马拉松day2-数据类型

2023.4生信马拉松day2-数据类型

原创
作者头像
清南
修改2023-04-15 19:06:41
7180
修改2023-04-15 19:06:41
举报
文章被收录于专栏:清南-我的生信入门笔记

本节思维导图

引用自 生信技能树小洁老师
引用自 生信技能树小洁老师

1.数据类型

-数值型numeric

-字符型character

要有引号,单引号双引号都行

-逻辑型logical

三种取值:TRUE(T) FALSE(F) NA(不知道)

可以简写但是不能小写!

-数据类型的转换优先顺序:

原则:尽可能保留更多信息以便于转换回去;

字符型保留信息最多,逻辑型最少;

2. 判断数据类型

class():判断数据类型/数据结构

is族函数:判断某个数据是否是某个类型的数据,返回T或F(注:形式大于内容)

代码语言:txt
复制
is.numeric()
is.logical()
is.character()

as族函数:将某个数据转换为某个类型(注:能转换的才能转换)

代码语言:txt
复制
as.numeric()
as.logical()
as.character()

3.常见报错

-处理报错是分析数据的常态

-(1)object not found:

要么该赋值没赋值(该起名字没起名字),要么该加引号没加引号

-(2)could not find function

函数名字打错了-拼写错误/大小写错误(或者以后会遇到的该装的包还没装)

-避免拼写错误的小tips

① 按 tab 键补全

② 光标放到命令提示符 > 后,按↑翻出之前运行的命令直接编辑

4.比较运算

-比较运算的结果是逻辑值

-多个逻辑条件的连接用 与& 或| 非!

5.多个数据的组织——数据结构

-向量

一个向量内部只能有一种数据类型,可以有重复值

重复值允许,不同的数据类型不允许!

-数据框

约等于表格:列有要求(同一列只允许同一种数据类型);不是文件(可以导出来成为一个文件)

数据框单独拿出的一列是向量,视为一个整体

-矩阵

-列表

6.向量的生成

-以下代码基本来自小洁老师所给的R script,打开即得;

-打开如果是乱码有以下解决办法:File -- Reopen with encoding -- (Choose encoding)UTF-8 -- OK

代码语言:txt
复制
#(1)用 c() 结合到一起
c(2,5,6,2,9) 
c("a","f","md","b")
#当 c() 内有不同数据类型时,会自动转化成同一种,且转换优先级原则为尽量保留多的信息;

#(2)连续的数字用冒号“:” 
1:5

#(3)有重复的用rep(),有规律的序列用seq(),随机数用rnorm()
rep("x",times = 3)  
seq(from = 3,to = 21,by = 3)
rnorm(n = 3)

#(4)通过组合,产生更为复杂的向量。
paste0(rep("x",times = 3),1:3)

7.对单个向量的操作

-(1)赋值给一个变量名

-变量名称的选择原则:尽量避免和函数名冲突;尽量不涉及特殊字符,不涉及中文字符;尽量字母在前数字在后

代码语言:txt
复制
#(1)赋值给一个变量名
x = c(1,3,5,1) #随意的写法
x
x <- c(1,3,5,1) #规范的赋值符号 Alt+减号
x
#赋值+输出一起实现
x <- c(1,3,5,1);x
(x <- c(1,3,5,1))

-(2)简单数学计算

代码语言:txt
复制
#(2)简单数学计算
x+1
log(x)
sqrt(x)

-(3)根据某条件进行判断,生成逻辑型向量

代码语言:txt
复制
#(3)根据某条件进行判断,生成逻辑型向量
x>3
x==3

-(4)初级统计

代码语言:txt
复制
#(4)初级统计
max(x) #最大值
min(x) #最小值
mean(x) #均值
median(x) #中位数
var(x) #方差
sd(x) #标准差
sum(x) #总和

length(x) #长度/函数个数,函数思想
unique(x) #去重复(从左往右看过去,第一次出现不算重复,第二次或多次出现的算重复)
duplicated(x) #对应元素是否重复
table(x) #重复值统计
sort(x) #默认从小到大排序——R语言里的默认思想
sort(x,decreasing = F)
sort(x,decreasing = T)

8.对两个向量进行的操作

代码语言:txt
复制
x = c(1,3,5,1)
y = c(3,2,5,6)
#(1)比较运算,生成等长的逻辑向量
x == y 
y == x
#以上两行返回结果完全一致,不做区分
代码语言:txt
复制
#(2)数学计算
x + y
代码语言:txt
复制
#(3)连接
paste(x,y,sep=",")
x>10

#paste与paste0的区别
paste(x,y)
paste0(x,y)
paste(x,y,sep = "")
paste(x,y,sep = ",")
#区别在于paste0默认连接方式为无缝连接,没有sep这个参数;paste默认连接方式为空格,有sep这个参数;

#当两个向量长度不一致
x = c(1,3,5,6,2)
y = c(3,2,5)
x == y # 啊!warning!
#循环补齐:等位运算且长度不同时发生循环补齐

#利用循环补齐简化代码——完美答案很短,但不好直观理解:
paste0(rep("x",3),1:3)
paste0("x",1:3)
代码语言:txt
复制
#(4)交集、并集、差集
intersect(x,y)  #默认会去重复!
union(x,y)  #默认会去重复!
setdiff(x,y)   #x减y
setdiff(y,x)   #y减x
#x与y的差集和y与x的差集是不一样的!

x %in% y #看x的每个元素在y中存在吗
y %in% x #看y的每个元素在x中存在吗

#x == y和x %in% y的区别:前者是x和y对应位置一对一比较,是等位运算;后者是x每一个元素都要和y里所有的元素比一遍;

9.向量筛选(取子集)

代码语言:txt
复制
x <- 8:12
#根据逻辑值取子集
x[x == 10]
x[x < 12]
x[x %in% c(9,13)]
#根据位置取子集
x[4]
x[2:4]
x[c(1,5)]
x[-4]
x[-(2:4)]

-练习题:如何从13个数中筛选大于7的

(1)将13个数作为向量赋值给x

(2)x>7 #判断,之后会返还13个TRUE/FAUSE

(3)[]将TRUE对应的值挑选出来,FALSE丢弃

10.修改向量中的某个/某些元素:取子集+赋值

没有赋值就没有发生过!

代码语言:txt
复制
x
#改一个元素
x[4] <- 40
x
#改多个元素
x[c(1,5)] <- c(80,20)
x

11. 简单向量作图

代码语言:txt
复制
k1 = rnorm(12);k1
k2 = rep(c("a","b","c","d"),each = 3);k2
plot(k1)   # plot()默认以下标作为横坐标,以输入的向量为纵坐标进行画图
boxplot(k1~k2)  #以k1作为横坐标,以k2作为纵坐标画图

思考题:

下列两个代码哪个正确?

answer:A(达到了把小于0.05的取出来并排序的目的)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 本节思维导图
  • 1.数据类型
    • -数值型numeric
      • -字符型character
        • -逻辑型logical
          • -数据类型的转换优先顺序:
          • 2. 判断数据类型
          • 3.常见报错
            • -(1)object not found:
              • -(2)could not find function:
                • -避免拼写错误的小tips
                • 4.比较运算
                • 5.多个数据的组织——数据结构
                  • -向量
                    • -数据框
                      • -矩阵
                        • -列表
                        • 6.向量的生成
                        • 7.对单个向量的操作
                          • -(1)赋值给一个变量名
                            • -(2)简单数学计算
                              • -(3)根据某条件进行判断,生成逻辑型向量
                                • -(4)初级统计
                                • 8.对两个向量进行的操作
                                • 9.向量筛选(取子集)
                                  • -练习题:如何从13个数中筛选大于7的
                                  • 10.修改向量中的某个/某些元素:取子集+赋值
                                  • 11. 简单向量作图
                                    • 思考题:
                                    领券
                                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档