思维导图
今日作业
getwd()
options(stringsAsFactors = T)
# 读数据
a <- read.table(file='D:/Rwork1/huahua.txt', sep = '\t', header = T)
# 行名+列名
X<-read.csv('doudou.txt') # 变量区分大小写
colnames(X) #查看列名
rownames(X) #查看行名,默认值的行名就是行号,1.2.3.4...
colnames(X)[1]<-"bioplanet"
colnames(X) #查看列名
X<-read.csv(file = "huahua.txt",sep = " ",header =T,row.names=1)#最后row.names的意思是修改第一列为行名
# 导出
write.table(X,file = "yu.txt",sep = ",",quote=F)#分隔符改为逗号,字符串不加双引号(默认格式带由双引号)
# 变量的保存与重新加载---
# 这次没有处理完的数据下次想接着用怎么办?--学会保存和重新加载。保存的格式是RData
?save.image
save.image(file="bioinfoplanet.RData")#保存当前所有变量
load("D:/Rwork1/bioinfoplanet.RData")
save(X,file="test.RData")#保存其中一个变量
load("test.RData")#再次使用RData时的加载命令
# 提取元素
a[2,3]#第2行第3列
a[2,]#第2行
a[1:2]#第a列到第b列
a[c(3,5),]#第a列和第b列
a[,1]#第1列
a[1] #也是第1列
a$X1 #还是第1列
class(a[,1]) # 取到内部
class(a[1])
class(a$X1) # 取到内部
# 直接使用数据框中的变量
?paste0()
?runif()
b <-data.frame(case=paste0("S",1:9),values=runif(9))
values <- runif(9)
case <- paste0("S",1:9)
plot(a$case,a$values)
# 作业
save(X,file="test.RData")
?save()
# 会不会是环境中的变量是小写x,为我这里想存储的写成了大写的X
# 还有没有其他可能呢?
复习之前学的
复习列表
#内置数据集state.center就是一个列表,mtcars是一个数据框
state.center
a_b <- state.center
mtcars
iris
class(iris)
#创建一个列表
a <- 1:20
b <- matrix(1:20,4,5)
c <- mtcars
d <- 'this is a list test'
mlist <- list(a,b,c,d)
mlist
#为对象添加名称
mlist <- list(first=a,second=b,third=c,forth=d)
mlist #发现,如,#[[4]] = $forth
#[[4]] = $third
#[[2]] = $second
#[[1]] = $first
#列表的访问
##用索引值[]访问
mlist[1]
mlist[1,4] #报错
mlist[c(1,4)]
#从名称访问
state.center[x] #报错
state.center['x']
state.center[c('x','y')]
mlist[c('first','third')]
mlist[c(1,3)]
#用$符号访问
mlist$second
#用[[]]访问
mlist[2]
mlist[[2]]
class(mlist[2])
class(mlist[[2]]) #列表是一量火车,[]只是取下一节火车,本质还是火车
#[[]]是取下一节火车中的货
mlist[1]
mlist[[1]]
class(mlist[1])
class(mlist[[1]])
#比较取值
mlist[2] #因为一次访问多个元素,这些元素的数据结构又不同,那么输出结构只能是列表
mlist[[2]]
mlist['second']
mlist$second
mlist[['second']]
class(mlist[2])
class(mlist[[2]])
class(mlist['second'])
class(mlist$second)
class(mlist[['second']])
####### 对于列表而言,取值方法主要有3种:[数字]、[[数字]]、 $名字
# =[名字]、=[[名字]]、
# 某节车厢、某节车厢的内容、
#[[]]每次只能访问一个元素 // $也一样
#修改列表的值
mlist[5] <- iris #报错,[]是一个列表,不能直接赋值
mlist[[5]] <- iris
#删除列表中的元素
mlist <- mlist[-5]
mlist[[5]] <- NULL
mlist[5] <- NULL
复习数据框
##内置数据集##
# 妖尾花数据集
iris
# 32辆汽车在11个指标上的数据
mtcars
# 48块石头的数据
rock
##常见数据框##
?data.frame()
# 以state开头的数据,美国50个洲的相应的数据
state.name #50个洲的名称
state.abb #50个洲的简称
state.region #50个州的地理位置
attributes(state.abb)
attributes(state.region)
state.x77 # 50个洲的8个指标 这是一个列表
#将以上数据集合成一个数据框
state <- data.frame(state.name,state.abb,state.region,state.x77) #50个洲,8+3个指标
state
##数据框的访问##
# 索引访问
state[1]
state[c(2,4)]
state[-c(8,9,10,11)]
state[ ,"state.abb"] # 用行或列的名字可以直接去除相应的行和列
state[,"state.abb"] # 很有意思:“[ ,"state.abb"] ” = “[,"state.abb"]”,有无空格都一样
state$state.abb # $符号取值对画图很重要
# 对比一下,适用于列表的[[]],同样适用于数据框,结果一样,想火车的例子
state[1]
state[[1]]
class(state[1])
class(state[[1]])
# 画图试试
women #15位女性的身高体重数据
plot(women$height, women$weight) # 身高与体重散点图
plot(women$weight, women$height)
# 尽量不适用attach函数,$符号访问代码更清晰
作业
备注
在《R语言入门与实践》中,作者说道“尽量不使用attach()函数”,用$这样代码更清晰