BiocManager不能安装包,显示Bioconductor version cannot be validated; no internet connection,不能联网 解决方法

可以使用install.packages安装包,但不能使用BiocManager::install(“”)安装包,显示Bioconductor version cannot be validated; no internet connection , URL ‘https://bioconductor.org/config.yaml’: status was ‘SSL connect error’. 使用BiocManager::valid()也同样出现这样的问题。

尝试了很多方法都无效:

  1. 关闭防火墙,无效;
  2. 更换镜像,无效;
    options("repos" = c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
    options(BioC_mirror="https://mirrors.tuna.tsinghua.edu.cn/bioconductor")
  3. 由于我的电脑是win7系统,以为是版本不兼容,从R4.0试到了R4.2.3,无效;
  4. 以为是Rstudio版本的问题,单独在不同版本的R中试,无效;
  5. 设置R里HTTP选项,R里 Tools -> Global Options ->Packages and unchecking the ->”Use Internet Explorer library/proxy for HTTP”option, 也无效;
  6. 设置下载方式,无效;
options(download.file.method = 'libcurl')
options(url.method='libcurl')

后来仔细查看报错信息,可能是无法连接到config.yaml配置文件导致的,在“https://bioconductor.org/config.yaml”中下载了配置文件到自己的电脑,然后指定这个配置文件,果然就搞定了。

options(
  BIOCONDUCTOR_CONFIG_FILE = "D:/Program Files/R/R-4.2.3/config.yaml"
)

R语言保存PDF不能显示中文文字

今天在使用pheatmap画图时,发现图片如果保存为图片形式(png, jpeg)时,中文能正常显示,如果保存为矢量图PDF时,中文的字都被点代替了,不能正常显示,查找了好久,终于找到解决办法 了,就是在pdf函数中指定中文字体,如pdf(“heatmap.pdf”, family = “GB1”),具体情况可以参考这篇文章

利用R语言做冗余分析

在统计学中,冗余分析是通过原始变量与典型变量之间的相关性,分析引起原始变量变异的原因。以原始变量为因变量,典型变量为自变量,建立线性回归模型,则相应的确定系数等于因变量与典型变量间相关系数的平方。它描述了由于因变量和典型变量的线性关系引起的因变量变异在因变量总变异中的比例。 在生态学中应用比较多,也有用来做基因型与表型性状做关联分析的。利用R语言比较好实现,也方便做图。

主要需要用到vegan这个R包,其中比较关键的函数是rda这个函数,进行数据分析后可以用ggplot2进行绘图。具体代码如下:

library(vegan)
library(ggrepel)  ###这个包主要用来防止画图时标签重叠,不过好像用处也不是很大,不用的话将后面geom_text_repel改成geom_text就可以了,标签位置可以后期用AI进行调整
library(ggplot2)
scale_df <-function(xv)          ########数据标准化
{
  max_v <- max(xv)
  min_v <- min(xv)
  return(round((xv-min_v)/(max_v-min_v), 2))
}
df <- read.table("df.txt", sep = "\t", header = F)
df <- apply(df, 2, scale_df)
env <- as.data.frame(df[,-c(1:7)])    #######数据的第8列到最后为解释变量,主要是一些环境因子
phe <- as.data.frame(df[,c(1:7)])    ####数据的前7列为响应变量,主要是样本的表型数据
RDA <- rda(env~phe[,1] + phe[,2] + phe[,3] + phe[,4] + phe[,5] + phe[,6] + phe[,7], phe)  ######进行RDA分析
######################################################
ii <- summary(RDA)
sp <- as.data.frame(ii$species[,1:2]) * 2      ####为了避免向量的标签重叠将数据进行了变换,不会影响向量的形状,对结果不会有影响
st <- as.data.frame(ii$sites[,1:2])
yz <- as.data.frame(ii$biplot[,1:2]) * 3
row.names(sp) <- c("MWD", "WHC", "BD", "SP", "CEC", "pH", "S1", "S2", "S3")   ####对解释变量进行重命名
row.names(yz) <- c("SOC", "TN", "SOCS", "TNS", "POC", "AN", "POC/MOC")  ####对响应变量进行重命名
p <- ggplot() + 
  geom_point(data = st, aes(RDA1, RDA2), col = "gray") +  ###各样本的分布图,也可以去掉
  geom_segment(data = sp, aes(x=0, y=0, xend = RDA1, yend = RDA2),
               arrow = arrow(angle=22.5,length = unit(0.35,"cm"),
                             type = "closed"),linetype=1, size=0.6,colour = "red") +  ####解释变量的向量图
  geom_text_repel(data = sp, aes(RDA1, RDA2, label=row.names(sp))) +
  geom_segment(data = yz, aes(x=0, y=0, xend = RDA1, yend = RDA2),
               arrow = arrow(angle=22.5,length = unit(0.35,"cm"),
                             type = "closed"),linetype=1, size=0.6,colour = "blue") +    ####响应变量的向量图
  geom_text_repel(data = yz, aes(RDA1, RDA2, label=row.names(yz))) +
  labs(x="RDA axis1(76.89%)", y="RDA axis2(14.43%)") +
  geom_hline(yintercept=0,linetype=3, size=1) +   ####分割线
  geom_vline(xintercept=0,linetype=3, size=1)+
  theme_bw()+theme(panel.grid=element_blank())
pdf("RDA.pdf")
print(p)
dev.off()

主要参考资料:

冗余分析(RDA)在R语言中的实现
R语言做冗余分析(RDA)的一个简单小例子
R语言实现冗余分析(RDA)完整代码
第五章 非约束排序3 主成分分析(PCA)-基于Hellinger转化的数据以及其他内容

使用ggplot2画Admixture群体结构图

关于怎么使用Admixture做群体结构分析可以参考这个篇文章。大多数其它介绍的绘图的都是用barplot画图,这样得到的图很多地方不好调整,这里主要讲怎么使用ggplot2画分群的结果图。

  1. 对群体进行聚类,将相近的个体放在一起,这里主要用到dist函数和hclust函数。
  2. 将个体的名称按照聚类的顺序排列
  3. 将个体的分群信息也按聚类的顺序排列
  4. 重新组合成一个新的数据框
  5. 使用reshap2的melt将数据框的宽数据转换成长数据
  6. 使用ggplot2绘图
library(ggplot2)
library(reshape2)

####cluster#######
df_order <- read.table("admixture/snp.4.Q", header = F, sep = " ")
out.dist=dist(df_order, method="euclidean")
out.hclust=hclust(out.dist,method="ward.D")
order_s <- out.hclust$order

df_sample <- read.table("admixture/snp.nosex", header = F, sep = "\t") ##存放个体名称的文件

df_sample  <- df_sample [,1]

df_sample <- df_sample[order_s]

col_panel <- rainbow(4)  ###设置调色板
#########i=4
i <- 4
file <- paste("admixture/snp.", i, ".Q", sep = "")
df <- read.table(file, header = F, sep = " ")
df <- df[order_s,]

df_new <- transform.data.frame(samples=df_sample, df)  ###组合成新的数据框

aql <- melt(df_new, id.vars = "samples")
aql$samples <- factor(x=aql$samples, levels = df_sample)
y_lab <- paste("K=", i, sep = "")

p4 <- ggplot(aql) + geom_bar(aes(x=samples, weight=value, fill=variable), position = "stack", width = 1) +
  scale_x_discrete(expand = c(0,0)) + scale_y_discrete(expand = c(0,0)) + 
  scale_fill_manual(values = col_panel ) + ####可根据需要调整颜色
  theme(legend.position = "none",
        panel.background = element_blank(),
        axis.text.x = element_text(angle = 90, size = 10),
        axis.title.x = element_blank(),
        axis.ticks = element_blank(), axis.title.y = element_text(size = 13),
        panel.grid = element_blank()) + ylab(y_lab)