2020-04-14


title: "R_basic"
author: "Mande Xue"
date: "2020/4/14"
output:
html_document: default
(所有代码参考自生信宝典-R学习教程)


knitr::opts_chunk$set(echo = TRUE)

R Markdown

This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.

When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:

#creat a vector
a <- c(rnorm(5), rnorm(5,1),runif(5),runif(5,-1,1),1:5, rep(0,5),c(2,10,11,13,4),scale(1:5)[1:5])
a
# ncol = 5 , 
# byrow = T, fill the matrix by row
a <- matrix(a, ncol = 5, byrow = T)
a
# 按行加和
# rowSums(a)

#去除全部为零的行

a <- a[rowSums(abs(a))!= 0,] 
a

a*2

log2(abs(a)+1)


apply(a,2,var)
# 1 按行
# 2 按列
apply(a,1,mean)

b = a[apply(a,1,mean) > 0,]
b
# order函数 排序

# mad 中值绝对偏差
order(apply(b,1,mad),decreasing = T)

c = b[order(apply(b,1,mad),decreasing = T),]
c
# 添加行名
rownames(c) <- paste("Gene",letters[1:nrow(c)],sep = "_")
# 添加列名
colnames(c) <- toupper(letters[1:ncol(c)])

c
#转置
expr = t(c)
expr
#矩阵操作
expr2 =expr
expr2[expr2 < 0] = 0
expr2
expr2 <- as.data.frame(expr2)
str(expr2)

#利用列名当索引
expr2[expr2$Gene_c < 1 ,"Gene_b"]<-1
expr2
# 读入样品信息
sampleInfo = "Samp;Group;Genotype
A;Control;WT
B;Control;WT
D;Treatment;Mutant
C;Treatment;Mutant
E;Treatment;WT
F;Treatment;WT"
phenoData = read.table(text=sampleInfo,sep=";", header=T, row.names=1, quote="")
phenoData
#  %in% 函数的过滤功能
phenoData = phenoData[rownames(phenoData) %in% rownames(expr),]
phenoData
# merge matrix
# by = 0,按行的名字排序
# by = columnname 按照共有的某一列合并

merge_data <- merge(expr,phenoData,by = 0, all.x = T)
merge_data



rownames(merge_data) <-merge_data$Row.names
merge_data

merge_data[,-1]
merge_data


merge_data[sapply(merge_data, is.numeric)]

你可能感兴趣的:(2020-04-14)