R语言的数据结构
思维导图

· 向量
1. 定义:向量是用于存储数值型、字符型**或逻辑型数据的一堆数组。

2. 从向量中提取元素
根据元素的位置
x[4] #第四个元素
x[-4] #排除法,除了第4个元素之外剩余的元素
x[2:4]#第2到4个元素
x[-(2;4)]#除了第2-4个元素
x[c(1,5)] #第1个和第5个元素
根据元素的值
x[x==10]#等于10的元素
x[x<0]
x[x %in% c(1,2,5)]#存在于向量c(1,2,5)中的元素
%in%
:%in% 判断 前面的对象是否在后面的容器中
· 数据框
1. 定义:不同的列可以包含不同模式的数据(数值型、字符型),数据框可以通过data.frame()
构建。
2. 创建一个数据框

3. 设置行名和列名
colnames(X) #查看列名
rownames(X) #查看行名,默认值的行名就是行号,1.2.3.4...
colnames(X)[1]<-"bioplanet"#有的公司返回数据,左上角第一格为空,R会自动补为x,用这个命令来修改
X<-read.csv(file = "huahua.txt",sep = " ",header =T,row.names=1)#最后row.names的意思是修改第一列为行名
参考生信星球公众号
4.数据的保存
write.table()#文本文件保存
read.table() #文本文件读取
save(X,file="test.RData") #存储R对象为rda
load("test.RData")#加载
saveRDS(object = X, file = "test.rds") #存储R对象为rds
iris2 <- readRDS(file = "test.rds") #加载
5. 提取元素
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. 直接使用数据框中的变量
函数attach()
, detach()
, with()
① attach()
:可将数据框添加到R的搜索路径中,R在遇到一个变量名以后,将检查搜索路径中的数据框。
summary(mtcars$mpg)
plot(mtcars$mpg, mtcars$disp)
plot(mtcars$mpg, mtcars$wt)
每次都要加变量mtcars,感觉非常繁琐,试试加入attach()
attach(mtcars)
summary(mpg)
plot(mpg, disp)
plot(mpg,wt)
detach(mtcars)
②detach()
:将数据框从搜索路径中删除
③with()
:当名称相同的对象不止一个时
with(mtcars, {
print(summary(mpg))
plot(mpg,disp)
plot(mpg,wt)
})
在这种情况下,{ }之间的语句都针对mtcars执行,赋值仅在( )内生效
如果在构建with()
结构以外存在的全局变量时,用特殊赋值符号<<-
Q: save(X,file="test.RData")这句代码如果报错object X not found,是为什么,应该怎么解决?
A: 首先在console中输入X,可以肯定的是提示X不存在,考虑是否没有将X这个变量加载到R环境中,其次也是最有可能的是X没有区分大小写,如果变量名为x(小写)则X是不存在的一个变量。
网友评论