1.R语言语法知识
#多个向量取交集
Reduce(intersect,list(x,y,z))
#如何知道一个txt的行数是多少
x=readLines("文件名.txt")
#或者
length(x)
cl = lapply(xmls,td)
cl_df <- t(do.call(cbind,cl)) #这一步可以实现把列表转换为矩阵
clinical = data.frame(cl_df) #这一步可以实现把矩阵转换为数据框
#用idntical判断两个东西的一致性
identical(string::str_sub(colnames(exprSet),1,12),meta$ID)
#colnames(exprSet):表达矩阵样本的编号与病人的ID :meta(ID)要一样
#构建lasso回归时,输入数据是表达矩阵(仅含tumor样本)和对应的生死
#通过stringr这个包来替换:例如将hsa-mir-21替换成hsa_mir_21
library(stringr)
str_replace("hsa-mir-21","-","_")
#如果要替换所有可以用:
str_replace_all("hsa-mir-21","-","_")
apply的第一个参数是数据框或矩阵的名字
第二个参数是:1表示行,2表示列
第三个参数是:对该数据框或者矩阵的每一行或每一列要做的事情
lapply和sapply就是针对不是数据框、矩阵的类型,而是针对列表或者是向量循环
lapply的结果是列表
sapply的结果是向量或矩阵
2.运行R Markdown的时候总会有这个警示:
每次都要报错问题描述:In strsplit(code, "\n", fixed = TRUE) : input string 1 is invalid in this locale,尽管没有报错,但每次运行都会跑出来这条警告信息,非常的烦人,检索后解决问题,在stackoverflow 上有高人提供了解决方案,感谢他们。此处做一简单记录。
原因:不明确
解决办法:如下代码运行则可
Sys.setlocale('LC_ALL','C')
3.代码问题
tmp = function(x){x[,1]} #tmp现在是一个函数了,那么如何检验这个函数
tmp(ids[[1]]) #取ids的第一个元素看看是不是自己想要的就知道函数对不对了
[,2]代表矩阵取第2列,矩阵取列只能通过这种方式,不能用$
data.frame可以用$取列或者行,也可以用exp[3,]来看第3行
4.安装包一直报错,可能是镜像问题
image.png#如果镜像一直出现问题导致下载包打不开,可以试试下面这个代码,然后再下载
options(BioC_mirror="http://mirrors.cloud.tencent.com/bioconductor") #这个是Bioconductor的包下载之前设置的镜像
options("repos" = c(CRAN="https://mirrors.aliyun.com/CRAN/")) #这个是CRAN上面的包下载之前要设置的镜像
#Bioconductor包下载
if(!require("BiocManager")) install.packages("BiocManager",update = F,ask = F)
BiocManager::install("TCGAbiolinks")
5.更改UTD-8的几种方式:
更改UTF-8image.png
或者从Global tools改也可以:
image.png6.在处理数据之前可以先在工作目录下建两个文件夹,一个装图,一个装数据
# 构建结果储存文件夹
if(!dir.exists("data")) dir.create("data")
if(!dir.exists("figures")) dir.create("figures")
#然后在保存的时候注意要保存到这两个文件夹就可以了
# 保存结果
save(exprSet,file = "data/Step01-salmon2exprSet.Rdata")
save(txi,file=paste0('data/Step01-salmon2txi.Rdata')) #保存数据到data
ggsave(g,filename = 'figures/Step04-DEG_volcano.png') #保存图到figures
7.安装包的实惠不想要很多的提示信息:在library前面加上这句话就可以了suppressMessages
# 不显示加载信息:
suppressMessages(library(limma))
8.R语言中怎么把第一列的数据作为行名?
rt<-read.table(file="c:\\data.txt")
rownames(rt)<-rt[,1] #将数据框的第一列作为行名
rt<-rt[,-1] #将数据框的第一列删除,只留下剩余的列作为数据
head(rt) #看看是不是达到了你的要求
9.修改数据框列名
列名的本质是个向量,所以可以用向量修改元素的方法来做。基础包取子集+赋值就可以做。
比如内置数据集iris,想把第五列的列名Species改成Group。
#基础包:
test=iris
colnames(test)[5] = "Group"
head(test)
#dplyr更粗暴,好理解。一个函数直接完爆,第二个参数的语法是新名字=旧名字。
library(tidyr)
test = rename(test,Group = Species)
head(test)
#dplyr函数的代码更易读,不过对行名没感觉,应该说tidyrverse不喜欢行名
#基础包的代码可以用于修改行名。
10.修改字符串
#修改字符串:把reported改为not reported ,数据是tmp
tmp <- gsub("reported", "not reported", tmp)
tmp <- gsub("i", "I", tmp)
tmp <- gsub("v", "V", tmp)
11.去除NA
#清洗空数据
new_data <- na.omit(olddata)
#对重复数据去重
new_data <- unique(data
#替换数据框中所有的NA为0
x[is.na(x)]<- 0
网友评论