文章目录

  • 1. 数据类型与数据结构
    • 1. 数据类型
    • 2. 数据结构
      • 1. 向量
      • 2. 矩阵
      • 3. 数据框
      • 4. 列表
        • 创建一个表格
  • 2. 文件读写
    • 1. 文件读取
    • 2. 数据导出
  • 3. 绘图
    • 1. 基础包:plot() 函数
    • 2. ggplot2包
      • 1. 入门级绘图模板
      • 2. aes映射
      • 3. 分面
      • 4. 几何对象
      • 5. 统计变换
      • 6. 位置关系
      • 7. 坐标系
    • 3. ggpubr包
    • 4. 拼图

1. 数据类型与数据结构

**大部分代码及图片引用自生信技能树

1. 数据类型

数值型 numeric
字符型 character
逻辑型 logical

逻辑型分3种TRUE / TFALSE / FNA

2. 数据结构

1. 向量

向量可以有名字

scores = c(100,59,73,95,45)
names(scores) = c("jimmy","nicker","Damon","Sophie","tony")
scores
scores["jimmy"]
scores[c("jimmy","nicker")]
names(scores)[scores>60]

2. 矩阵

  1. 矩阵新建
m <- matrix(1:9, nrow = 3)
colnames(m) <- c("a","b","c") #加列名
  1. 矩阵取子集
m[2,3]
m[2:3,1:2]
  1. 矩阵的转置和转换
t() #转置
as.data.frame() #转换
  1. 矩阵画热图

3. 数据框

  1. 数据框来源
    1)用代码新建
    2)由已有数据转换或处理得到
    3)读取表格文件

    注意:数据框不允许重复的行名
    

    4)R语言内置数据

  2. 新建和读取数据框

     1)data.frame() 函数
    
df1 <- data.frame(gene   = paste0("gene",1:4),change  = rep(c("up","down"),each = 2),score   = c(5,3,-2,-4))
df1
 2)read.csv() 函数
  1. 数据框属性

     1)行、列数
    
dim(df1)
nrow(df1)
ncol(df1)
  2)行、列名
rownames(df1)
colnames(df1)
  1. 数据框取子集

1)按列(取向量)

df1$gene
2)按坐标
df1[2,2]
df1[c(1,3),1:2]
3)按名字
## 按名字
df1[,"gene"]
df1[,c('gene','change')]
4)按条件(逻辑值)
df1[df1$score>0,]
df1$gene[df1$score>0,] #y[x>0],x、y有对应关系
取数据框的最后一列
df1[,ncol(df1)]
取数据框除了最后一列以外的其他列
df1[,-ncol(df1)]
  1. 数据框修改

     1)改一个格
    
df1[3,3] <- 5
2)改一列
df1$score <- c(12,23,50,2)
3)新增一列
df1$p.value <- c(0.01,0.02,0.07,0.05)

or

library(dplyr)
test #data.frame
#按行计算每个基因的方差
var_test <- apply(test, 1, var)
#新增一列,名字为var1,内容为等号右侧
test <- mutate(test, var1 = var_test)
#添加一列,将行名改为一列
deg <- mutate(deg,probe_id=rownames(deg))
4)改行名、列名
rownames(df1) <- c("r1","r2","r3","r4")
5)只修改某一行/列的名
colnames(df1)[2] <- "CHANGE"
  1. 两个数据框的连接

     1)merge() 函数
    
test1 <- data.frame(name = c('jimmy','nicker','Damon','Sophie'), blood_type = c("A","B","O","AB"))
test1
test2 <- data.frame(name = c('Damon','jimmy','nicker','tony'),group = c("group1","group1","group2","group2"),vision = c(4.2,4.3,4.9,4.5))
test2test3 <- data.frame(NAME = c('Damon','jimmy','nicker','tony'),weight = c(140,145,110,138))
test3
merge(test1,test2,by="name")
merge(test1,test3,by.x = "name",by.y = "NAME") # 要连接的两列列名不同时
2)inner_join
deg <- inner_join(deg,ids,by="probe_id")
  1. 数据框的其它操作

排序 arrange

#对数据框的某一列排序(同一行不变),默认升序
test <- arrange(test, var1)

4. 列表

  1. 列表的新建
l <- list(m1 = matrix(1:9, nrow = 3),m2 = matrix(2:9, nrow = 2))
  1. 列表取子集
    1)$
    2)[[ ]]

创建一个表格

一个简单的表格是这么创建的:

数据结构 新建 取子集
向量 x x < - c() x[n]
数据框 df1 data.frame() df1[x, y],$新增列,修改
矩阵 m matrix() m[x, y]
列表 l list() l[[n]], $

没有赋值,就没有发生过
一定要经常检查数据

2. 文件读写

1. 文件读取

文件读取

ex1 <- read.table("ex1.txt")
ex2 <- read.csv("ex2.csv")
默认参数不合适
# 把第一列设置为行名,列名不进行检查(-是特殊字符)
ex2 <- read.csv("ex2.csv",row.names = 1,check.names = F)
# 注意:数据框不允许重复的行名
rod = read.csv("rod.csv",row.names = 1)
# 先不加 row.names参数 进来
rod = read.csv("rod.csv")
# 多个空位时,fill=T不能解决,用read.delim()和fread()可以解决
soft <- read.table("soft.txt",header = T,fill = T) #其实不对
# sep="" 将多个看不见的空位或制表符识别为一个
soft2 <- read.table("soft.txt",header = T,sep = "\t")

2. 数据导出

1. 导出为csv
write.csv(soft,file = "soft.csv")
2. 保存为Rdata并加载
save(soft,file = "soft.Rdata")
load(file = "soft.Rdata")
3. 基础包作图得导出
4. ggplot系列图(包括ggpubr)通用的简便保存  ggsave
p <- ggboxplot(iris, x = "Species", y = "Sepal.Length",color = "Species", shape = "Species",add = "jitter")
ggsave(p,filename = "iris_box_ggpubr.png")
5. eoffice包 导出为ppt,全部元素都是可编辑模式
library(eoffice)
topptx(p,"iris_box_ggpubr.pptx")

3. 绘图

1. 基础包:plot() 函数

par(mfrow = c(2,2)) #把画板分成四块,两行两列
#如果报错,把右下角画板拉大一点即可
dev.off() #关闭画板

当一个代码需要复制粘贴三次,就应该写成函数或使用循环

2. ggplot2包

1. 入门级绘图模板

1. 作图数据,横纵坐标
ggplot(data = iris)+geom_point(mapping = aes(x = Sepal.Length,y = Petal.Length))
  1. 属性设置(颜色、大小、透明度、点的形状,线型等)

     1)手动设置,需要设置为有意义的值
    
ggplot(data = iris) + geom_point(mapping = aes(x = Sepal.Length,y = Petal.Length), color = "blue")
ggplot(data = iris) + geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length), size = 5,     # 点的大小5mmalpha = 0.5,  # 透明度 50%shape = 8)  # 点的形状
2)映射:按照数据框的某一列来定义图的某个属性
ggplot(data = iris)+geom_point(mapping = aes(x = Sepal.Length,y = Petal.Length,color = Species))
#自行指定映射的具体颜色
ggplot(data = iris)+geom_point(mapping = aes(x = Sepal.Length,y = Petal.Length,color = Species))+scale_color_manual(values = c("blue","grey","red"))
3)区分color和fill两个属性
空心形状和实心形状都用color设置颜色
ggplot(data = iris)+geom_point(mapping = aes(x = Sepal.Length,y = Petal.Length,color = Species),shape = 17) #17号,实心的例子
ggplot(data = iris)+geom_point(mapping = aes(x = Sepal.Length,y = Petal.Length,color = Species),shape = 2) #2号,空心的例子
既有边框又有内心的,才需要color和fill两个参数ggplot(data = iris)+geom_point(mapping = aes(x = Sepal.Length,y = Petal.Length,color = Species),shape = 24,fill = "black") #24号,双色的例子

2. aes映射

3. 分面

1.分面
ggplot(data = iris) + geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length)) + facet_wrap(~ Species)  #~在前竖着切,~在后横着切
2. 双分面
dat = iris
#letters
#dat$Group = sample(letters[1:5])
dat$Group = sample(letters[1:5],150,replace = T) #放回且可重复随机抽样
ggplot(data = dat) + geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length)) + facet_grid(Group ~ Species)  #分组的行和列分类变量,Species这一列含有150个元素

4. 几何对象

几何对象可以叠加
局部设置和全局设置
ggplot(data = iris) + geom_smooth(mapping = aes(x = Sepal.Length, y = Petal.Length))+geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length))ggplot(data = iris,mapping = aes(x = Sepal.Length, y = Petal.Length))+geom_smooth()+geom_point()

5. 统计变换

  1. 直方图
ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut))   #图形几何函数,默认stat="count"ggplot(data = diamonds) + stat_count(mapping = aes(x = cut))   #统计变换函数


  1. 不统计,直接作图
ggplot(data = fre) +geom_bar(mapping = aes(x = Var1, y = Freq), stat = "identity") #直接作图,而不统计
  1. count 改为 prop
ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut, y = ..prop.., group = 1))#group=1 把所有数据当作一个整体

6. 位置关系

  1. 抖动的点图
ggplot(data = iris,mapping = aes(x = Species, y = Sepal.Width,fill = Species)) + geom_boxplot()+geom_point()
#抖动得点图
ggplot(data = iris,mapping = aes(x = Species, y = Sepal.Width,fill = Species)) + geom_boxplot()+geom_jitter()
  1. 堆叠直方图
ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut,fill=clarity))
  1. 并列直方图
ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut, fill = clarity), position = "dodge")

7. 坐标系

  1. 翻转坐标系

ggplot(data = mpg, mapping = aes(x = class, y = hwy)) + geom_boxplot() +coord_flip() # x,y轴调换位置
  1. 极坐标系
bar <- ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut, fill = cut), width = 1) + theme(aspect.ratio = 1) +labs(x = NULL, y = NULL)
bar
bar + coord_flip()
bar + coord_polar()

3. ggpubr包

sthda上有大量ggpubr出的图

4. 拼图

R包 patchwork

数据类型与数据结构 文件读写及绘图相关推荐

  1. Scale 编程基础 A(变量声明、基本数据类型、运算符、文件读写、分支与循环、数据结构)

    Scala: 变量声明.基本数据类型.运算符.文件读写.分支与循环.数据结构(List/Tuple/Range/Vector/Set/Map)与迭代器 变量声明 val:是不可变的,在声明时就必须被初 ...

  2. 【台大郭彦甫】Matlab入门教程超详细学习笔记四:数据类型与文件读写(附PPT链接)

    变量类型与文件读写 前言 一.变量类型 1.numeric(数值类型) 2.char(字符类型) 3.string(字符串类型) 4.structure(结构体) 5.cell(元胞数组) 5.高维数 ...

  3. 数据结构与算法分析(一)——C++文件读写+py文件读写

    string类 有了string就可以跟字符数组说拜拜了,方便多了... 常用: 长度:str.length() 尺寸:str.size() 比较:str1.compare(str2) 连接:str1 ...

  4. Pandas简明教程:三、Pandas文件读写

    文章目录 1.CSV文件 2.Excel的读写 3.HTML文件的读写 4.其它文件(数据)类型的简单说明 5.办公自动化问题简析 本系列教程教程完整目录: Pandas支持了非常丰富的文件类型(见文 ...

  5. python存储文件_Python的文件读写与存储

    文件读写与存储 7.2. 读写文件 open()返回一个文件对象,最常见的用法带有两个参数:open(filename, mode). >>> f = open('workfile' ...

  6. 简学Python第二章__巧学数据结构文件操作

    Python第二章__巧学数据结构文件操作 欢迎加入Linux_Python学习群  群号:478616847 目录: 列表 元祖 索引 字典 序列 文件操作 编码与文件方法 本站开始将引入一个新的概 ...

  7. py pandas 库及 excel 文件读写

    文章目录 1. 简介 1.1 df 读数据快速参考 2. DataFrame类 2.0 构造函数 2.1 index 2.2 观察data 2.3 筛选与过滤 2.4 增加/删除 column 2.5 ...

  8. day1简述、输入输出、运算符、条件语句、文件读写、三元运算

    文章目录 1.Python 简述 2.变量 3.输入输出 4.数据运算 5. 条件语句 if..else.elif 循环语句 for.while 6.文件读写 7.三元运算 1.Python 简述   ...

  9. python 获取窗口句柄_Python文件读写最详细的讲解

    本文来自读者投稿,作者:黄同学 今天这篇文章来详细讲解一下Python中的文件读写. 1.文件读写的流程 1)类比windows中手动操作txt文档,说明python中如何操作txt文件? ① win ...

最新文章

  1. 分享10个原生JavaScript技巧
  2. xx is not in the sudoers file 问题解决
  3. [转]Delphi中QuotedStr介绍及使用
  4. 【WC2018】即时战略
  5. Psych101(part3)--Day3
  6. m苹果放n篮子_能用一只手,我绝对不用一双:苹果试图解锁更多Apple Watch控制手势...
  7. silverlight 学习笔记 (七):Prism的第一个应用
  8. 第八界中国云计算大会---简单回忆
  9. C语言函数调用的方式求两个数的大小
  10. 《Windows游戏编程大师技巧》一、学海无涯
  11. Windows下的Neo4j下载与安装
  12. 颜色值RGB转换为HEX(十六进制)
  13. 80后小学计算机课上的游戏,80后最值得回味的经典课间游戏
  14. MFC课程设计 --学生成绩管理系统
  15. 图像处理之3d算法----2d转3d算法介绍
  16. 通用微PE工具箱下载_通用微PE使用教图文程
  17. 在 HBuilder X 创建Uni-app项目运行时报错
  18. ubuntu如何用快捷键截图
  19. Magic Number魔数是什么
  20. Cesium基础知识-加载json数据

热门文章

  1. python开发一个复杂的网站_用Python的SimPy库简化复杂的编程模型的介绍
  2. python中国剩余定理公式_《孙子算经》之物不知数题:中国剩余定理
  3. stc15w404as引脚图_怎么把STC15W404AS的EEPROM读写
  4. mysql数据库表更新_MySQL更新表数据
  5. AUTOSAR开发工具DaVinci Configurator里的Modules
  6. 雷柏v500、惠普gk100、微星gk50和达尔优dk100对比哪个好
  7. Continued Fraction
  8. 常见的有规律的单复数转换(随笔)
  9. mysql count的用法_155、MySQL入门(五):SUM and COUNT用法
  10. linux中跳板机的部署