首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Day3 学习 简单作图 数据框 列表 矩阵

Day3 学习 简单作图 数据框 列表 矩阵

原创
作者头像
Qianhui Cheng
发布2025-02-09 09:31:08
发布2025-02-09 09:31:08
2210
举报

title: "day3"

output: html_document

date: "2025-02-08"


存储数据

save(存储的脚本, file="脚本名.Rdata") 可存储多个变量

练习2-4整理

代码语言:r
复制
load("/Users/Desktop/25.2 生信/R_01/gands.Rdata")
# 1.用函数计算向量g的长度
length(g)
# 2.筛选出向量g中下标为偶数的基因名。==取子集
g[seq(2,100,2)]
g[c(F,T)] #用逻辑值挑选,会选出T所在的内容
# 3.向量g中有多少个元素在向量s中存在(要求用函数计算出具体个数)?将这些元素筛选出来
g[g %in% s] #看哪些向量是存在的
table(g %in% s) #看有多少个
# 4.生成10个随机数: rnorm(n=10,mean=0,sd=18),用向量取子集的方法,取出其中小于-2的值
z =  rnorm(n=10,mean=0,sd=18)
z[z<-2] #这里完成两件事1.z <- 2  2.只识别z中第二个值
z
z =  rnorm(n=10,mean=0,sd=18)
z[z<(-2)]

简单向量作图

代码语言:r
复制
k1 = rnorm(36, mean=5, sd=10);k1
plot(k1)
k2 = rep(c('a','b','c','d'), each=9);k2
boxplot(k1~k2)

第一个为散点图,横坐标为数字的位置 第二个为箱线图。rep函数中的each为一个向量重复完再执行下一个向量的重复,而换成times则为整体的重复(abcdabcd)

数据框与矩阵

matrix 只允许一种数据类型 data.frame 每列只允许一种数据类型

数据框

1.数据框来源 (1)用代码新建

(2)由已有数据转换或处理得到

(3)读取表格文件

(4)R语言内置数据

2.新建数据df1 <- data.frame(gene = paste0("gene",1:4), change = rep(c("up","down"),each = 2), score = c(5,3,-2,-4)) df1df2 <- read.csv("gene.csv") df2

3.内置数据,R语言或者R包里自带的,无需赋值即可使用(不全是数据框哦)iris class(iris) #顺便了解一下其他数据结构的内置数据 heatmap(volcano) #热图函数 火山图参数,系统内置 class(volcano) letters #小写字母 LETTERS #大写字母

4.数据框属性

dim 纬度。nrow行数 ncol列数dim(df1) nrow(df1) ncol(df1) #rownames行名 colnames列名 rownames(df1) colnames(df1)

5.数据框取子集

代码语言:r
复制
df1$gene
mean(df1$score)
## 按坐标 前行后列
df1[2,2]
df1[2,]
df1[,2]
df1[c(1,3),1:2]

## 按名字。''和""均可
df1[,"gene"]
df1[,c('gene','change')]

6.数据框修改

代码语言:r
复制
#改一个格
df1[3,3] <- 5
df1
#改一整列
df1$score <- c(12,23,50,2)     
df1
#?
df1$p.value <- c(0.01,0.02,0.07,0.05) 
df1

#改行名和列名
rownames(df1) <- c("r1","r2","r3","r4")
#只修改某一行/列的名
colnames(df1)[2] <- "CHANGE"

7.两个数据框的连接

代码语言:r
复制
test1 <- data.frame(name = c('jimmy','nicker','Damon','Sophie'), 
                    blood_type = c("A","B","O","AB"))
test1
test2 <- data.frame(NAME = c('Damon','jimmy','nicker','tony'),
                    group = c("group1","group1","group2","group2"),
                    vision = c(4.2,4.3,4.9,4.5))
colnames(test2)[1] <- 'name'
test2

test3 <- data.frame(NAME = c('Damon','jimmy','nicker','tony'),
                    weight = c(140,145,110,138))
test3
merge(test1,test2,by="name")
 # 如果第一列名字不一样,怎么合并?
merge(test1,test3,by.x = "name",by.y = "NAME") #不用专门修改名字,by.x/y函数解决
 # 优先选择改数据,在R里面修改数据
矩阵和列表 不支持$
代码语言:r
复制
m <- matrix(1:9, nrow = 3)
colnames(m) <- c("a","b","c") #加列名
m #仅取一行,也会给你一个向量的名字
m[2,]
m[,1]
m[2,3]
m[2:3,1:2]
m
t(m) #转置
m1 <- as.data.frame(m) #转换为数据框
#列表 可以用$
x <- list(m1 = matrix(1:9, nrow = 3),
          m2 = matrix(2:9, ncol = 2))
x

x[[1]]
x$m1

# 补充:元素的名字

scores = c(100,59,73,95,45) #单纯的向量,赋予名字之后不修改向量的类型
names(scores) = c("jimmy","nicker","Damon","Sophie","tony")
scores
table(scores)
scores["jimmy"] #jimmy列的数值
scores[c("jimmy","nicker")]

names(scores)[scores>60] #scores>60的向量名

### 后置的难点
## 按条件(逻辑值)
df1 <- data.frame(gene   = paste0("gene",1:4),
                  change  = rep(c("up","down"),each = 2),
                  score   = c(5,3,-2,-4))
k = df1$score>0;k
df1[k,]

#筛选score > 0的基因
df1[k,1]
df1$gene[k]
df1$gene[df1$score>0]

# 删除 
rm(x)
rm(df1,df2)
rm(list = ls()) 

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 存储数据
  • 练习2-4整理
  • 简单向量作图
  • 数据框与矩阵
  • 数据框
  • 4.数据框属性
  • 5.数据框取子集
  • 6.数据框修改
  • 7.两个数据框的连接
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档