r语言和metawin_学会这些R语言技巧至少可以节省半年时间

这篇博客整理了R语言在Ubuntu环境中的使用技巧和备忘,包括处理phyloseq数据、错误牢记、数据框操作、文件处理、图形制作、R包管理和安装等方面。博主分享了如何解决phyloseq中遇到的问题,如文件路径、文件处理、数据过滤和图形定制等,并提供了实用的R语言代码片段。此外,还涵盖了Ubuntu系统的文件清理和扩增子数据分析的注意事项。
摘要由CSDN通过智能技术生成

ubuntu备忘

定期清空回收站

扩增子数据牢记

r ubuntu 相关技巧和备忘

待解决问题1:phyloseq有一篇文章案例使用输入和输出文件相同的文件名,无法执行

待解决问题2:

待解决问题3:样品分组文件太长了,导致提取出来数据存在NA值

错误牢记:for循环错误一定要检查这个地方

错误牢记:正确提取行名

修改注释文件的门类标签为标准格式

phyloseq格式的文件导出为txt

合并phyloseq:默认去除为主食出的OTU

phyloseq时刻牢记:

phyloseq错误牢记:如果注释结果一整列都是NA,出现问题tax_table 将出现错误

ps转化:phyloseq提取mapping文件

ps转化:提取mapping文件

phyloseq文件路径必须为英文,不可包含中文路径

ps转化:正确提取OTU表格

ps转化:正确提取OTU表格2

ps转化:正确提取tax注释表格

ps 选取部分otu或者按照分类等级过滤数据

输入输出:导入开头为#的文件

你一定遇到过-符号被读为.的情况

输入输出:文件保存命令

输入输出:R环境保存和读取

矩阵:将一半矩阵补全

矩阵:去除全部为0的列

载入包不报warming

字符串:拆分字符提取一部分出来

提取当前路径添加子文件夹

按照特定字符拆分字符串

数据框:数据框查看前面和末尾

数据框:修改列名

数据框:修改便变量类型注意曲线修改

数据框:构建一列有规律的向量内容

矩阵:OTU表格按照不同丰度进行分类

矩阵:缺失值使用0来代替 0更换为任意值

载入R包

R包:R语言载入包方式(require)实现多个包一起载入

R包:第一种安装

R包:bioconductor安装或者全能安装

R包:gitjhub安装

R包:github增强版-不记得仓库号或者安装不上

R包:安装R包无法访问系统library文件夹

R包:你的R包到底安装到哪里了?

R包:定期升级所有R包

R包:查看默认载入的包

R包:查看包的函数

文件处理:查看目录下文件

文件处理:新建文件夹

图形:修改图例字体

图形:修改字体

图形 ggsave保存中文正确用法

图形:R字体调整为新罗马字体

图形:人工设定颜色

图形:ggplot主题修改模板

图形:散点连接起来

Markdown展示表格

rmarkdown输出玩网页后代码框带进度条

表格输出:输出字符串不带引号

R语言使用观念和小技巧

R 语言全局使用技巧

Markdown使用

图形-ggplot2

R语言文件夹和文件操作工具

R包

矩阵

数据框操作

字符串

文件导入导出

phyloseq

错误牢记

待解决问题

逐步更新091119

ubuntu备忘

定期清空回收站

ll ~/.local/share/Trash/*

sudo rm -rf ~/.local/share/Trash/*

扩增子数据牢记

样品名称设置要求字母和数字组合,只能在多使用一个下划线。字母一定要开头。(平衡全部软件的要求);

r ubuntu 相关技巧和备忘

R语言使用观念和小技巧

当输入错误代码,命令行出现+符号,按esc结束,重新输入。

选中函数,点击F1回跳出帮助文件。

mapping=aes,注意出现类似mapping错误的时候别忘记是aes的问题。

ggplot速查表:http://rstudio.com/cheatsheets。

图形映射都有图例,也就是在aes中的变量。x,y轴可以看作的x,y的图例。

在geom中设置show.legend=F,可以去除图例。

Rsrudio在当前目录打开脚本文件,可以设置目录默认切换到当前工作目录。

千万不要设置绝对路径,保证代码的可移植性。

tab键的重要性。

尽量不去使用.R去写代码。使用proj或者Rmd。

面对键盘忘代码?快去封装小函数吧,轮子越多跑的越快。

如果一个数据框来自于excel,导入R中发现有重复列,但是看上去却没有,要仔细检查是否有空的行也读为了数据框。

当我们进行逻辑判断的时候T和TRUE有什么区别?我推荐尽量写全称,虽然很多情况下T可以解决问题;

当我们在win下R在运行代码中出现的一些错误似乎不应该出现,或者根本找不到问题所在,这是不妨重启R 试试。

点击F11 键全屏terminal,也可以调回来。

写代码一定要细心,切记不要着急,代码不是盲目赶出来的。

R 语言全局使用技巧

sessionInfo()

Markdown使用

Markdown展示表格

kable函数优化R语言中的数据展示方式

kable(head(tab))

rmarkdown输出玩网页后代码框带进度条

pre code,pre,code {

white-space:pre!important;

overflow-x: scroll!important;

}

表格输出:输出字符串不带引号

在输出中添加参数quote = F即可输出为不加引号的字符串。

write.table(quote = F)

图形-ggplot2

图形:修改图例字体

##修改图例为斜体

legend.text = element_text(size = 15,face = "italic")

#修改图例为加粗斜体

legend.text = element_text(size = 15,face = "bold.italic")

图形:修改字体

# 首次需要安装win字体并导入

#install.packages("extrafont")

# library(extrafont)

loadfonts(device="win")

fonts()

####图形:保存图片的几种方式

#保存图片1

ggsave("fileame.pdf", p, width = 10, height = 6)

ggsave(FileName2, p3, width = 12, height =8, device = cairo_pdf, family = "Times New Roman" )

#保存图片2

pdf("filename.pdf", width = 10, height = 6)

dev.off()

#保存图片3

tiff(file="alpha_chao1.tif", res = 300, compression = "none", width=180,height=140,units= "mm")# res = 300分辨率,units= "mm"高度和宽度的单位

dev.off()

图形 ggsave保存中文正确用法

#install.packages('Cairo')

library("Cairo")

ggsave("geo_Fus_wilt.pdf", p1, width = 12, height =8 , device = cairo_pdf, family = "Song")

图形:R字体调整为新罗马字体

####这种方式将所有字体调整为新罗马字体####

windowsFonts(myFont = windowsFont("Times New Roman"))

p + theme_gray(base_size = 20, base_family = "myFont")

图形:人工设定颜色

这里补充一些常见的颜色,用于绘图

mi=c("#1B9E77" ,"#D95F02", "#7570B3","#E7298A")

图形:ggplot主题修改模板

注意只有theme中的才算做图形外观,用于保存。family = "Times",这里注意不同操作系统或者平台对字体的命名不同,在这里新罗马字体被命名为Times。

p =p+theme_bw()+

theme(

panel.grid.major=element_blank(),

panel.grid.minor=element_blank(),

text=element_text(family="Times New Roman",face = "bold"),

plot.title = element_text(vjust = -8.5,hjust = 0.1),

axis.title.y =element_text(size = 20,face = "bold",colour = "black"),

axis.title.x =element_text(size = 24,face = "bold",colour = "black"),

axis.text = element_text(size = 20,face = "bold",family = "Times"),

axis.text.x = element_text(colour = "black",size = 14,family = "Times"),

axis.text.y = element_text(colour = "black",size = 14,family = "Times"),

legend.text = element_text(size = 15,face = "bold")

#legend.position = "none"#是否删除图例

)

p

#保存图片过程中修改字体

图形:散点连接起来

可以作为置信区间的一个补充

p = p + geom_polygon()

R语言文件夹和文件操作工具

文件处理:查看目录下文件

list.files(path, full.names = TRUE)

文件处理:新建文件夹

filtpath

#方便我们建立文件夹

dir.create(dirName)

R包

R包:第一种安装

########安装R包的几种方式#############

# 国内用户推荐清华镜像站

site="https://mirrors.tuna.tsinghua.edu.cn/CRAN"

install.packages("DESeq2", repo=site)

R包:bioconductor安装或者全能安装

source("https://bioconductor.org/biocLite.R")

biocLite("phangorn")

##使用biocondauctor安装R包R3.5版本才可以使用

library(BiocInstaller)

biocLite("structSSI" )

library(BiocManager)

install()

R包:gitjhub安装

library("devtools")

install_github("joey711/phyloseq")

# 或者

devtools::install_github("gavinsimpson/ggvegan")

library(phyloseq)

#或者

require(devtools)

install_github("ggvegan")

#或者

if (!requireNamespace("devtools", quietly = TRUE))

install.packages("devtools")

devtools::install_github("calligross/ggthemeassist")

# 安装开发版(连github不稳定有时间下载失败,多试几次可以成功)

devtools::install_github("phyloseq", build_vignettes = TRUE)

# 安装新功能最优版

devtools::install_github("phyloseq", ref = "optimization")

install.packages("igraph")

#安装指定版本

require(devtools)

install_version("igraph", version = "0.6.5",

R包:github增强版-不记得仓库号或者安装不上

##当不记得github仓库号之后,使用下面包安装github包

install.packages('gdtools') #已发布至CRAN

library(githubinstall)

##无法下载得到github包,或者无法安装后,将github包手动下载下来,解压之后定位文件夹名称后安装

install.packages("C:/Users/wentao/Desktop/hrbrthemes-master/", repos = NULL, type = "source")

library(hrbrthemes)

install.packages("C:/Users/wentao/Desktop/microbiomeutilities-master/", repos = NULL, type = "source")

library(microbiomeutilities)

R包:安装R包无法访问系统library文件夹

R包:你的R包到底安装到哪里了?

### 查看包的安装地址

.libPaths()#查看包的加载地址

.libPaths("C:/Program Files/R/R-3.5.1/library")#修改到你包的安装地址

载入R包

R包:R语言载入包方式(require)实现多个包一起载入

##将包分为两个类型载入

.cran_packages

.bioc_packages

# Load packages into session

sapply(c(.cran_packages, .bioc_packages), require, character.only = TRUE)

### 或者

pkgs

"ggplot2", "DESeq2")

sapply(pkgs, require, character = TRUE)

R包:定期升级所有R包

#######定期升级所有R##########

update.packages( )

R包:查看默认载入的包

####查看默认载入的包########

getOption("defaultPackages")#:查看启动R时自动载入的包。

####查看默认载入的包########

R包:查看包的函数

#############查看包的函数#

help(package = 'mypackage')#:查看‘mypackage’的帮助

#############查看包的函数#

===

矩阵

矩阵:OTU表格按照不同丰度进行分类

矩阵分为四类

a[a>= 0.01] = 1

a[a<= 0.01& a> 0.001] = 0.6

a[a<= 0.001& a> 0.0001] = 0.3

a[a<0.0001] = 0

矩阵:缺失值使用0来代替 0更换为任意值

#缺失值使用0来代替

count[is.na(count)]

#将数据框中的0更换为任意值

a[a==0]

数据框操作

数据框:数据框查看前面和末尾

#数据框查看前面和末尾

head(wild)

tail(wild)

数据框:修改列名

colnames(otu_table1) =c("compound",colnames(otu_table1)[2:9])

colnames(tax) =c(colnames(tax)[1:2],"kingdom",

"phylum","class","order","family","genus","species","id")

数据框:修改便变量类型注意曲线修改

cs = as.character(Taxonomies$Phylum)

cs1 = as.factor(cs)

数据框:构建一列有规律的向量内容

#构建一列向量命令集合

fengdu$breaks= rep(1:65, 12)

# 字母开头,数字结尾

row.names(count) = paste("RE", 1:635, sep = "")

字符串

字符串:拆分字符提取一部分出来

result

print(result)

colnames(bray_curtis) = result

提取当前路径添加子文件夹

##提取当前路径

path = getwd();path

## 添加子文件夹路径

path0

##在path路径下新建一个子文件夹

dir.create(path0)

##切换路径

setwd(path)

按照特定字符拆分字符串

#basename提取路径下的文件名, strsplit使用制定分隔符拆分字符串,sapply提取制定字符串

sample.names

sample.names

文件导入导出

输入输出:导入开头为#的文件

#R语言中处理文件中注释符号#可用

tax = read.table("Classifier_of_16sgg.txt",sep="\t",row.names = 1,header = T,comment.char="") ;head(tax,3)

你一定遇到过-符号被读为.的情况

其实不仅仅是-还有许多R语言会check的符号都被读错,如果不添加check.names = F 参数,你的数据就会读成这样. 。

#默认check.names = F

read.delim

#默认check.names = T

read.table

read.csv

输入输出:文件保存命令

# 保存txt

write.table(Root_exudates,"RET_a2_only_compounds.txt",row.names = T,

col.names = T,sep = "\t")

#开头空一格字符保存

write.table("\t", "otu差异统计表格BNC8_BNC5_DESeq2.txt",append = F, quote = F, eol = "", row.names = F, col.names = F)

# 保存统计结果,有waring正常

write.table(index, "otu差异统计表格BNC8_BNC5_DESeq2.txt", append = T, quote = F, sep="\t", eol = "\n", na = "NA", dec = ".", row.names = T, col.names = T)

###文件保存处理开头第一行错位col.names = NA

write.table(as.matrix(jaccard.dist), file = "jaccard.txt", sep="\t", col.names = NA)

输入输出:R环境保存和读取

save(ps2, file = "D:/Shared_Folder/my_R_packages/easy_microbiome/easyMicrobiome/data/ps2.rda")

save(ps1, file = "D:/Shared_Folder/my_R_packages/easy_microbiome/easyMicrobiome/data/ps1.rda")

load("D:/Shared_Folder/my_R_packages/easy_microbiome/easyMicrobiome/data/ps2.rda")

矩阵:将一半矩阵补全

as.matrix(jaccard.dist)

矩阵:去除全部为0的列

n=ncol(count)

#增加一行,为整列的均值,计算每一列的均值,2就是表示列

count[n+1]=apply(count[c(1:nrow(count)),],1,sum)

#选择sumsqs大于5的otu

count=count[count[n+1] > 0,1:n]

head(count)

dim(count)

载入包不报warming

suppressMessages(library("vegan"))

phyloseq

修改注释文件的门类标签为标准格式

colnames(tax) = c("Kingdom","Phylum","Class","Order","Family","Genus","Species")

colnames(tax) = c("Kingdom","Phylum","Class","Order","Family","Genus")

phyloseq格式的文件导出为txt

ps

otu = as.data.frame(otu_table(ps))

tax = as.data.frame(tax_table(ps))

map = as.data.frame(sample_data(ps))

write.table("ID\t", file="otu.txt",append = FALSE, quote = FALSE, sep="\t",eol = "", na = "NA", dec = ".", row.names = F,col.names = F)

write.table(otu, file="otu.txt",append = T, quote = FALSE, sep="\t",eol = "\n", na = "NA", dec = ".", row.names = TRUE,col.names = TRUE)

write.table("ID\t", file="tax.txt",append = FALSE, quote = FALSE, sep="\t",eol = "", na = "NA", dec = ".", row.names = F,col.names = F)

write.table(tax, file="tax.txt",append = T, quote = FALSE, sep="\t",eol = "\n", na = "NA", dec = ".", row.names = TRUE,col.names = TRUE)

write.table("ID\t", file="map.txt",append = FALSE, quote = FALSE, sep="\t",eol = "", na = "NA", dec = ".", row.names = F,col.names = F)

write.table(map, file="map.txt",append = T, quote = FALSE, sep="\t",eol = "\n", na = "NA", dec = ".", row.names = TRUE,col.names = TRUE)

合并phyloseq:默认去除为主食出的OTU

当合并ps对象时,默认会去除每个水平未能注释出来的OTU,注意默认去除了

如果不愿意去除,可以设置NArm参数为F,但是这样的haul我的堆叠柱状图代码和冲击图代码可能会因为NA值的出现而不能完整运行。目前我还没有更新设置为F时的代码跟新。

phyloseq时刻牢记:

但凡是过滤ps文件一定要记得过滤OTU,防止全0出现

phyloseq对象的注释文件至少要2列

phyloseq错误牢记:如果注释结果一整列都是NA,出现问题tax_table 将出现错误

这种错误少见,但是出现要可以发现

#可以将最后一行任意一个元素修改为字符就行

tax_table(ps0)[1,7] = "unknow"

ps转化:phyloseq提取mapping文件

mapping = as.data.frame(sample_data(ps7))

table(mapping$SampleType)

ps转化:提取mapping文件

meta(ps)

phyloseq文件路径必须为英文,不可包含中文路径

ps转化:正确提取OTU表格

提取phyloseq格式中otu_table 此格式为矩阵格式,转化为数据框形式非常快

a

a = as.data.frame(a)

ps转化:正确提取OTU表格2

phyloseq将tax文件转化为data_frame 耗时非常大

vegan_otu

OTU

if(taxa_are_rows(OTU)){

OTU

}

return(as(OTU,"matrix"))

}

otu_table = as.data.frame(t(vegan_otu(ps1)))

ps转化:正确提取tax注释表格

使用相似方式提取tax格式文件为数据框形式,速度将变得很快

vegan_tax

tax

return(as(tax,"matrix"))

}

tax_table = as.data.frame(vegan_tax(ps))

head(tax_table)

ps 选取部分otu或者按照分类等级过滤数据

ps2 %

subset_taxa(

#Kingdom == "Bacteria" &

# Genus == "Fusarium"

# Species %in%c("Fusarium_oxysporum","Fusarium_keratoplasticum")

row.names(tax_table(ps1_rela ))%in%c("SH010924.07FU_KF986690_reps_singleton","SH020983.07FU_JN235282_refs")

)

ps2

错误牢记

错误牢记:for循环错误一定要检查这个地方

是否循环在一个区间

for (i in 1:nrow(a))

错误牢记:正确提取行名

row,names 和 rownames的区别 写成这样是错误的:tax = taxonomy[row,names(x),],但是写成下面这样是正确的:tax = taxonomy[rownames(x),]

tax = taxonomy[rownames(x),]

head(tax)

dim(tax)

# 手动筛选显著的组

x = x[rownames(taxonomy), ]

待解决问题

待解决问题1:phyloseq有一篇文章案例使用输入和输出文件相同的文件名,无法执行

是否是我哪里有错误,或者没有注意到的点??

for(i in seq_along(fnFs)) {

fastqPairedFilter(c(fnFs[[i]], fnRs[[i]]),

c(fnFs[[i]], fnRs[[i]]),

trimLeft=10, truncLen=c(245, 160),

maxN=0, maxEE=2, truncQ=2,

compress=TRUE)

}

运行错误:我于是重新构建了过滤完成后的文件路径

Error in fastqPairedFilter(c(fnFs[[i]], fnRs[[i]]), c(fnFs[[i]], fnRs[[i]]), : The output and input file names must be different.

待解决问题2:

出现错误“:Error in na.fail.default(list(age = c(1L, 1L, 2L, 1L, 2L, 2L, 2L, 2L, : missing values in object

#

# dataMatrix$age

# dim(dataMatrix)

# length(dataMatrix$age)

# dataMatrix$GCGAGCGTTATCCGGATTTATTGGGTTTAAAGGGTGCGCAGGCGGAAGATCAAGTCAGCGGTAAAATTGAGAGGCTCAACCTCTTCGAGCCGTTGAAACTGGTTTTCTTGAGTGAGCGAGAAGTATGCGGAATGCGTGGTGTAGCGGTGAAATGCATAGATATCACGCAGAACTCCGATTGCGAAGGCAGCATACCGGCGCTCAACTGACGCTCATGCACGAAAGTGTGGGTATC

#

# dataMatrix[is.na(dataMatrix)]

#

# training$age

# dim(training)

# testing$age

# dataMatrix$age

# dataMatrix[1]

待解决问题3:样品分组文件太长了,导致提取出来数据存在NA值

library(caret)

setup_example(c("phyloseq", "ggplot2", "caret", "plyr", "dplyr"))

sample_data(pslog)$age2

dataMatrix

# take 8 mice at random to be the training set, and the remaining 4 the test set

trainingMice

inTrain

length(inTrain)

#

inTrain=inTrain[1:228]

training

testing

##这里出现问题添加参数,na.action = na.pass,问题解决参考:https://github.com/topepo/caret/issues/479

plsFit

method = "pls", preProc = "center")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值