前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >跟小洁老师学习R语言的第三天

跟小洁老师学习R语言的第三天

原创
作者头像
贝诺酯
修改2023-03-12 19:03:18
4960
修改2023-03-12 19:03:18
举报

简单的向量作图

代码语言:javascript
复制
k1=rnorm(12);k1
k2=rep(c("a","b","c","d"),each=3);k2
plot(k1)
boxplot(k1~k2)

each和times的区别是times输出的是abcdabcdabcd,each输出的是aaabbbcccddd

数据框、矩阵和列表

向量是一维的

matrix矩阵是二维的,只允许一种数据类型

data.frame数据框是二维的,每列只允许一种数据类型

list列表可装万物

不清楚时可以用class或is族函数确认

数据框来源

(1)用代码新建

代码语言:javascript
复制
df1 <- data.frame(gene   = paste0("gene",1:4),
                  change  = rep(c("up","down"),each = 2),
                  score   = c(5,3,-2,-4))

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

(3)读取表格文件

代码语言:javascript
复制
df2 <- read.csv("gene.csv")

(4)R语言内置数据(例如iris、volcano)

代码语言:javascript
复制
iris
volcano
letters
LETTERS
#前十三位letters[1:13]
whitch(letters==M)

数据框属性

代码语言:javascript
复制
#查看行列
dim(df1)
#查看列
nrow(df1)
#查看行
ncol(df1)
#查看列的名字
rownames(df1)
#查看行的名字
colnames(df1)

数据框取子集

代码语言:javascript
复制
df1$gene 
mean(df1$score)
# 按坐标
df1[2,2]
df1[2,]
df1[,2]
df1[c(1,3),1:2]#中括号里的逗号,表示维度的分割
# 按名字
df1[,"gene"]
df1[,c('gene','change')]
# 按条件(逻辑值)
df1[df1$score>0,]

代码思维

代码语言:javascript
复制
#取数据框的最后一列?
df1[,3]
df1[,ncol(df1)]
#取数据框除了最后一列以外的其他列?
df1[,-ncol(df1)]
#筛选score > 0的基因
df1[df1$score > 0,1]#只需要第一列
df1$gene[df1$score > 0]

用于取子集的逻辑值向量不必须由x生成,与x对应即可

数据框修改

代码语言:javascript
复制
#改一个格
df1[3,3] <- 5
#改一整列
df1$score <- c(12,23,50,2)     
#增加一列
df1$p.value <- c(0.01,0.02,0.07,0.05) 
#改行名和列名
rownames(df1) <- c("r1","r2","r3","r4")
#只修改某一行/列的名
colnames(df1)[2] <- "CHANGE"

两个数据框的连接

代码语言:javascript
复制
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))
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")

矩阵和列表

代码语言:javascript
复制
m <- matrix(1:9, nrow = 3)
colnames(m) <- c("a","b","c") #加列名
pheatmap::pheatmap(m)
#形成一一对应的关系
pheatmap::pheatmap(m,cluster_rows = F,cluster_cols = F)
m[2,]
m[,1]
m[2,3]
m[2:3,1:2]
#矩阵的转换
t(m)
#转换为数据框,没有赋值就没有变
as.data.frame(m)
#列表
l <- list(m1 = matrix(1:9, nrow = 3),
          m2 = matrix(2:9, nrow = 2)
                                                        
l[[2]]
l$m1

删除

代码语言:javascript
复制
#删除一个
rm(l)
#删除多个
rm(df1,df2)
#删除全部
rm(list = ls())
#清空控制台
ctrl+l
#也可以选择environment右上角的小扫帚 

元素的名称

代码语言:javascript
复制
scores = c(100,59,73,95,45)
names(scores) = c("jimmy","nicker","Damon","Sophie","tony")
scores
scores["jimmy"]
scores[c("jimmy","nicker")]
names(scores)[scores>60]

矩阵和向量不支持$

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

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

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

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

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • 简单的向量作图
  • 数据框、矩阵和列表
  • 数据框来源
  • 数据框属性
  • 数据框取子集
  • 代码思维
  • 数据框修改
  • 两个数据框的连接
  • 矩阵和列表
  • 删除
  • 元素的名称
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档