磨刀不误砍柴工:小果给你讲述r语言中随机数生成和变量创建的实用函数






磨刀不误砍柴工:小果给你讲述r语言中随机数生成和变量创建的实用函数

小果  生信果  2024-05-06 19:00:59

各位小伙伴大家好啊,小果硕果丰丰的来啦,意味着今天又有好东西哦~
翻看小果之前的分享,多和R语言的使用以及R语言包的可视化相关,相信各位小伙伴也应该颇有收获吧,应该对基因组、转录组、蛋白质组及微生物组等数据的分析和可视化有了一定的心得,因此会迫不及待的对文章的图表进行复现呢?但因此会因为没有数据而发愁,发文章的人肯定不能像小果一样,不仅将可视化代码呈现给大家,还会将数据一并的分享给大家,让大家可以跟着小果一起复现,小果用心良苦啊。
所以今天给大家分享的内容主要是帮助大家创建数据框或矩阵以方便各位小伙伴去复现文章的图表,以提升对R语言的使用,或帮助小伙伴们创造和自己的数据相似的小文本数据而能更加快速的获得目标结果,以帮助大家鉴别是否达到自己的目标。
这是因为我们所使用的组学数据一般很大,这会导致分析速度和可视化的速度大大降低,所以我们一是利用小数据先让各位对预期结果有个了解,再就是利用服务器对组学数据进行分析处理,这不仅会提高计算机的使用寿命,也有利于提高我们对数据的分析速度,如果大家还没有服务器的话,可以联系小果进行租赁哦~



公众号后台回复“111”

领取本篇代码、基因集或示例数据等文件

文件编号:240430

需要租赁服务器的小伙伴可以扫码添加小果,此外小果还提供生信分析,思路设计,文献复现等,有需要的小伙伴欢迎来撩~

今天咱们的分享可以先从工作路径的设置开始,我们分别利用getwd()和setwd()分别获取当前的工作目录和设置之后的工作目录,小果呢,习惯于将每个项目整合成一个文件夹,这样不仅能在数据分析的过程中减少不必要的麻烦,也会为之后查找的时候省下很多时间:
getwd()
setwd('C:/Users/10395/Desktop/')getwd()
如此,大家可以看到,我们的工作目录从一开始的Documents文件夹转变成了Desktop文件夹,即桌面。这里我们要说的是在windows系统中通常使用‘’来区分文件夹,但是R语言中是不认这个区分符号的,我们需要将它调过来或用双斜杠表示,即‘/’或‘\’来表示。    
工作目录设置之后,我们开始创建向量和矩阵,咱们今天不介绍matrix、as.matrix、data.frame和as.data.frame这些较为常用的函数。小果主要对常用且在数据制造中实用的函数进行介绍,如有向量创建的rep、paste、paste0和seq等函数:
#rep(x,times,each,length.out) 的使用rep(1:4)rep(1:4,times = 3)  #按元素顺序重复三次rep(1:4,each = 3)   #每个元素依次重复三次rep(1:4,each = 4,length.out = 3)  #用length.out限制输出数据的长度
#paste(x1,x2,x3,,, sep) 的使用,用来链接两个元素paste(letters[1:3],1:3)paste(letters[1:3],1:3,sep = '')
#paste0(x1,x2,x3) 的使用,与paste相比可以不用使用sep进行间隔,paste0(letters[1:3],1:3)   # 其实是相当于paste(letters[1:3],1:3,sep = '')
#seq(from = , to = , by = ,length.out = NULL)   生成序列seq(2,10)   #生成从2到10的数列seq(2,10,by = 4)   #在2到10的数列中每隔4个数取一个
 
而且我们可以将这几个函数进行组合使用
#对rep和paste0组合使用rep(paste0(letters[1:3],LETTERS[1:3],1:3),times = 3)
相信大家对列类型的数据框的创建都已经了然于胸了,但是对于如何生成行数据是不是还有些模糊呢?这里有个函数rbind能生成行数据,配合生成列数据的函数cbind也能产生数据框哦:
#矩阵的创建rbind,cbind#rbind的使用rbind(1:5)xiaoguo <- c(10,5)rbind(1:4, c = 2, "a++" = 10, xiaoguo, deparse.level = 0)rbind(1:4, c = 2, "a++" = 10, xiaoguo)#cbind的使用cbind(0:5)cbind(0:5,1:3)#结合使用cbind(0:3,1:3,rbind(1:4, c = 2, "a++" = 10,xiaoguo))
最后虽然有报错的情况出现,但是依然不耽误终究是输出了一个矩阵,而且还带有着行名,但是如果大家觉的这个行名不好听怎么办呢,小果告诉你们,可以用以下函数进行解决:
aa#colnames查看矩阵的列名colnames(aa)  #相当于names的作用colnames(aa) <- c(paste0(letters[1:6],1:6))colnames(aa)#row.names查看列名row.names(aa)row.names(aa)  <- c(paste0(LETTERS[1:4],1:4))row.names(aa)
好啦,做到这里,相信大家对数据制造的基本过程已经有所理解,现在让我们进行这次分享的重头戏吧:数据的生成,小果这里给大家介绍3个随机数据生成的函数,分别是随机生成的sample函数、正态分布的rnorm函数和均匀分布的runif函数:
#sample的使用sample(x,size,replace)sample(1:5) #对1:5进行排序sample(1:5,4)  #在1:5中随机选取4个sample(1:5,6,replace = T)  #有重复的选出来6个数#runif(n,min,max)的使用runif(10,3,9)  #均匀分布#rnorm(x,mean,sd)的使用rnorm(10,mean = 4, sd = 2)  #正态分布#round(x,digits)的使用round(rnorm(10,3,6),2)  #对数据进行四舍五入
   
好啦,以上就是咱们今天的全部内容哦,我相信,当大家学会了这些内容后,也就能简单的对文章中的图进行复现,并能对咱们要处理的数据进行简化。那让我们用自己制作的数据做一个山脊图吧,首先是数据的制作:
bb <- data.frame(A1 = rnorm(15,1,1),                 A2 = rnorm(15,2,1),                 A3 = runif(15,3,9),                 A4 = rnorm(15,4,1),                 A5 = rnorm(15,5,1))head(bb)
#加载包library(ggridges)library(reshape2)library(ggplot2)#数据转换bb <- melt(bb)head(bb)
#画图P1 <- ggplot(bb, aes(x = value, y = variable)) +   #对图形进行大致描绘      geom_density_ridges(aes(fill = variable))P1
如果大家觉得自己画图的性价比太低,可以来我们的云平台哦,里面图形多样,适于刚开始接触生信或没有时间画图或想将自己的图形美化的小伙伴哦~
http://www.biocloudservice.com/home.html

小果还提供思路设计、定制生信分析、文献思路复现;有需要的小伙伴欢迎直接扫码咨询小果,竭诚为您的科研助力!


定制生信分析

服务器租赁

扫码咨询小果


往期回顾

01

1024G存储的生信服务器,两人成团,1人免单!

02

单个数据库用腻了?多数据库“组合拳”带你打开免疫浸润新思路!

03

孟德尔随机化的准备工作,GWAS数据的网站下载方法

04

跟着小果学复现-手把手带你拿下IF=46.9Nature 级别的主成分分析(PCA)图!!