前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >生信入门马拉松之R语言基础-文件读取、导出和画图(day 5)

生信入门马拉松之R语言基础-文件读取、导出和画图(day 5)

原创
作者头像
Crazy_George
修改2024-04-14 22:14:10
1430
修改2024-04-14 22:14:10
举报
文章被收录于专栏:R语言R语言

1. 文件读取

  • read.csv("文件")#通常读取csv文件
  • read.table("文件")#通常用于读取txt格式文件

Tips:read.系列函数,参数通用,不同函数的默认值有所不同。read.delim()读取txt文件,报错比table少。

代码语言:r
复制
test <- read.csv("ex3.csv")#读取文件并赋值给test。
test
class("ex3.csv")#返回结果是字符串。
class(test)#判断test是什么数据类型。

失败的表现是报错或意外的结果,一定要多检查分析流程中数据是否正确。


代码语言:r
复制
#1.读取ex1.txt
ex1 <- read.table("ex1.txt")#行名和列名被归到第一行第一列,查找帮助文档有解决方案。
ex1[2,4]
ex1 <- read.table("ex1.txt",header = T)

复习知识:data.frame的一列只能有一种数据类型

重点参数:header、check.names、row.names

代码语言:r
复制
#2.读取ex2.csv
ex2 <- read.csv("ex2.csv")#行名和列名没有正确归位,转化成矩阵时会发生数值型转变成字符型。
ex2
ex3 <- read.csv("ex2.csv",row.names = 1,check.names = F)#比较方便转化成矩阵

数据框不允许重复的行名。

代码语言:r
复制
#注意:数据框不允许重复的行名

rod = read.csv("rod.csv",row.names = 1)#有重复值,无法设置第一行为行名
rod = read.csv("rod.csv")
?read.csv

2. 数据框导出

  • csv格式:write.csv() write.csv(ex2,file = "example.csv")#write.csv(变量名,file = "文件名.csv")
  • txt格式:write.table(ex2,file = "example.txt")

2.1 用于读取/导出文件的R包

代码语言:r
复制
#用data.table来读取,无法设置行名
library(data.table)
ex1 = fread("ex1.txt")
class(ex1)
ex1 = fread("ex1.txt",data.table = F)
class(ex1)
ex2 = fread("ex2.csv",data.table = F)
class(ex2)
#不支持直接设置行名
library(tibble)
ex2 = column_to_rownames(ex2,"V1")

#rio
library(rio)
#一个函数支持读取很多格式,见帮助文档
?rio
ex1 = import("ex1.txt")
class(ex1)
#一个函数支持导出很多格式,见帮助文档
export(ex1,file = "ex1.xlsx")

3. 练习

代码语言:r
复制
library(rio)
gz1 <- import("GSE217012_Normalized_RPKM_LOG2_matrix.txt.gz")
class(gz1)

load("y.Rdata")
class(y)#矩阵
y
mean(y$gene1)#出现报错,小tips:数据框如果有两种数据类型,转矩阵会出现问题。
y[,1]
mean(as.numeric(y[,1]))#正确,老师的讲解
y[,1] = as.numeric(y[,1])#运行后依然是字符型,因为矩阵只允许一种数据类型,没有办法修改某一列某一行甚至某个元素的数据类型,要改除非整个矩阵一起改。

#我的答案
export(y,file = "y.txt")
aa2 <- import("y.txt")
class(aa2)
mean(aa2$gene1)

一定要经常检查数据又没有问题

4. 常用可视化R包和函数

4.1 作图

  • base
  • ggplot2
  • ggpubr
代码语言:r
复制
#1.基础包 略显陈旧 了解一下
plot(iris[,1],iris[,3],col = iris[,5]) 
text(6.5,4, labels = 'hello')

dev.off() #关闭画板

#2.ggplot2 中坚力量,语法有个性
library(ggplot2)
ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species))

#3.ggpubr 新手友好型 ggplot2简化和美化 褒贬不一
library(ggpubr)
ggscatter(iris,
          x="Sepal.Length",
          y="Petal.Length",
          color="Species")

基础作图
基础作图

4.2 拼图

  • par里的mfrow
  • grid.arrage
  • cowplot
  • patchwork

4.3 导出

  • 经典三段论
  • ggplot2里的ggsave
  • eoffice-topptx

5. ggplot2

5.1 入门级绘图模板

ggplot(data = <DATA>)+<geom_function>(mapping = aes(<MAPPINGS>))模板

  • ggplot2特殊语法:列名不带引号,行末写加号
  • 属性设置(颜色、大小、透明度、点的形状、线型等)
代码语言:r
复制
ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,y = Petal.Length),
             colors = "blue")

ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,y = Petal.Length),
             size = 5,
             alpha = 0.5,
             shape = 8)
#size = 5:点的大小5;alpha = 0.5:透明度50%;shape = 8:点的形状。

5.2 映射:按照数据框的某一列来定义图的某个属性

代码语言:r
复制
ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,y = Petal.Length),
             colors = "blue")#颜色设置设定,color是geom_point函数参数

ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,y = Petal.Length,
                           colors=species))
#颜色设置映射到iris数据框的species列,color是aes函数参数
  • 如何指定映射具体颜色?
代码语言:r
复制
ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species))+
  scale_color_manual(values = c("blue","grey","red"))

5.4 配色R包

  • RcolorBrewer,已经配置在ggplot2
  • ggsci

网上有教程

代码语言:r
复制
ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species))+
  scale_color_brewer(paletter = "set1")

5.5 color和fill两个属性-空心形状和实心形状

代码语言:r
复制
### Q2-1 空心形状和实心形状都用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号,空心的例子

### Q2-2 既有边框又有内心的,才需要color和fill两个参数

ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species),
             shape = 24,
             fill = "black") #24号,双色的例子

6. 作业

作业
作业
代码语言:r
复制
load("test.Rdata")

ggplot(test)+
  geom_point(aes(x= a,y = b,color = change))
作业-1
作业-1
代码语言:r
复制
ggplot(test)+
  geom_point(aes(x= a,y = b,color = change))+
  scale_color_manual(values = c("darkgreen","grey","red"))
作业-2
作业-2

7. 彩蛋

保存在幕布中。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 文件读取
  • 2. 数据框导出
    • 2.1 用于读取/导出文件的R包
    • 3. 练习
    • 4. 常用可视化R包和函数
      • 4.1 作图
        • 4.2 拼图
          • 4.3 导出
          • 5. ggplot2
            • 5.1 入门级绘图模板
              • 5.2 映射:按照数据框的某一列来定义图的某个属性
                • 5.4 配色R包
                  • 5.5 color和fill两个属性-空心形状和实心形状
                  • 6. 作业
                  • 7. 彩蛋
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档