前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Day5-香波🐟

Day5-香波🐟

原创
作者头像
波小囡
发布2023-12-02 08:37:26
1150
发布2023-12-02 08:37:26
举报
文章被收录于专栏:香波雨的风水宝地

Day5-数据结构

今天发烧了一个上午,躺尸了整整一个上午,然后老板夺命连环call直接给我整pofang了,害,不说了,开始今天滴学习~

今天滴演示代码全部来自花花老师滴生信星球哟~只有些许修改

向量vector

1.标量和向量的区分

首先明确“元素”的意思,元素指的是数字或者字符串(用chr表示)等,根据它可以区分两个词: 标量:一个元素组成的变量 向量:多个元素组成的变量 ------来自生信星球

代码语言:txt
复制
x<- seq(1,10,by = 0.5) #1-10之间每隔0.5取一个数
x<- rep(1:3,times=2) #1-3 重复2次

2.从向量中提取元素

(1)根据元素位置

代码语言:txt
复制
x[4] #x第4个元素
x[-4]#排除法,除了第4个元素之外剩余的元素
x[2:4]#第2到4个元素
x[-(2:4)]#除了第2-4个元素
x[c(1,5)] #第1个和第5个元素

(2)根据值

代码语言:txt
复制
x[x==10]#等于10的元素
x[x<0]
x[x %in% c(1,2,5)]#存在于向量c(1,2,5)中的元素

数据框 data frame

(1)读取本地数据

代码语言:txt
复制
a <- read.csv('duoduo.txt',sep = ',',header = T)
b <- read.table('duoduo.txt',header = T,sep = '\t')

sep与header的意义

sep 参数:sep 参数用于指定 CSV 文件中的字段分隔符。默认情况下,read.csv 函数会将逗号作为字段分隔符,但是你可以使用 sep 参数来指定其他分隔符,比如制表符 \t 或者分号 ; 等。这样可以确保正确地解析 CSV 文件中的数据。 header 参数:header 参数用于指定 CSV 文件中是否包含列名(标题行)。如果 CSV 文件中包含列名,则可以将 header 参数设置为 TRUE,这样读取的数据框将包含列名。如果 CSV 文件中不包含列名,则可以将 header 参数设置为 FALSE,这样读取的数据框将使用默认的列名。

(2)查看行名和列名、行数和列数

代码语言:txt
复制
colnames(a) #查看列名
rownames(a) #查看行名
dim(a)#几行几列

(3)数据框的导出

代码语言:txt
复制
write.table(a,file = "yu.txt",sep = "\t",quote=F)#分隔符改为逗号,字符串不加引号(默认格式带由引号) 

(4)变量的保存与重新加载

代码语言:txt
复制
save.image(file="day5.RData")#保存当前所有变量
save(a,file="test.RData")#保存其中一个变量
load("test.RData")#再次使用RData时的加载命令

(5)提取元素

代码语言:txt
复制
- a[x,y]#第x行第y列
- a[x,]#第x行
- a[,y]#第y列
- a[y] #也是第y列
- a[a:b]#第a列到第b列
- a[c(a,b)]#第a列和第b列
- a$列名#也可以提取列(优秀写法,支持Tab自动补全哦,不过只能提取一列)

(6)【选修部分】直接使用数据框中的变量

plot(iris$Sepal.Length,iris$Sepal.Width)

附加题:save(a,file="test.RData")这句代码如果报错object a not found,是为什么,应该怎么解决?

答案是创建一个a
答案是创建一个a

补充一下我滴R语言实战笔记嘿嘿

代码语言:txt
复制
# 2.2数据结构
a <- c(1:7)
a[2:6]
b <- c("a","b","c")
b[2]
c <- c(TRUE,FALSE,T,F)
c[1]
c[4]#向量(只能包含一种数据类型) vector

#代码清单2-1 创建矩阵
y <- matrix(1:20,nrow = 5,ncol = 4,byrow = F)
cells <- c(1,26,24,68)
rnames <- c('R1','R2')
cnames <- c('C1','C2')
mymatrix <- matrix(cells,nrow = 2,ncol = 2,byrow = T,dimnames = list(rnames,cnames))
mymatrix <- matrix(cells,nrow = 2,ncol = 2,byrow = F,dimnames = list(rnames,cnames))
##row是行,col是列

#代码清单2-2 矩阵下标的使用
x <- matrix(1:10,nrow = 2)
x[2,]
x[,2]
x[2,2]
x[1,2:5]
#矩阵(2维,只能包含一种数据类型)

#代码2-3 创建一个数组
dim1 <- c("A1","A2")
dim2 <- c("B1","B2","B3")
dim3 <- c("C1","C2","C3","C4")
myarray <- array(1:24,dim = c(2:4),dimnames = list(dim1,dim2,dim3))
#直接理解成矩阵的扩展(多维,只能包含一种数据类型)

#代码2-4 创建一个数据框data frame(可以包含多种数据类型,但是每一列只能包含一种数据类型)
patientID <- c(1:4)
age <- c(24,28,32,34)
diabetes <- c("Type1","Type1","Type2","Type1")
status <- c('poor','improved','excellent','poor')
patientsdata <- data.frame(patientID,age,diabetes,status)
#代码2-5 选取数据框中的元素

patientsdata[c('age','status')]#可以按列展示
patientsdata$patientID#展示数据框中的特定变量

##想展示patientsdata里糖尿病变量和病情变量的两者之间的列联表
table(patientsdata$diabetes,patientsdata$status)
 
##使用with函数来简化代码
summary(mtcars$mpg)
plot(mtcars$mpg,mtcars$disp)
plot(mtcars$mpg,mtcars$wt)
#用with
with(mtcars,
     {summary(mpg)
     plot(mpg,disp)
     plot(mpg,wt)
    })
#实例标识符case identifier
patientsdata <- data.frame(patientID,age,diabetes,status,row.names = patientID)

#代码2-6 因子的使用
patientID <- c(1:4)
age <- c(24,28,32,34)
diabetes <- c("Type1","Type1","Type2","Type1")
status <- c('poor','improved','excellent','poor')
diabetes <- factor(diabetes,ordered = F)
status <- factor(status,ordered = T,levels = c("poor",'improved',"excellent"))
patientsdata <- data.frame(patientID,age,diabetes,status)
str(patientsdata)#显示对象的结构
summary(patientsdata)

今天滴学习就到此结束啦!

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Day5-数据结构
  • 向量vector
    • 1.标量和向量的区分
      • 2.从向量中提取元素
        • 数据框 data frame
          • (1)读取本地数据
          • (2)查看行名和列名、行数和列数
          • (3)数据框的导出
          • (4)变量的保存与重新加载
          • (5)提取元素
          • (6)【选修部分】直接使用数据框中的变量
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档