R语言的数据类型
一、向量
- 理解向量,首先要知道什么是标量。
标量:一个元素组成的变量。如1,x等
向量:多个元素有序组成的变量。如c(1,2,3),c(a,b,d)等 - 尝试在R上为x赋值,数据类型为向量
> x<- c(1,2,3) #x被赋值为由1、2、3三个元素组成的向量
> x<- 1:10 #x被赋值为1-10之间的所有整数
> x<- seq(1,10,by = 0.5) #x被赋值为1-10之间以0.5为间距的数,即1、1.5、2、2.5等
> x<- rep(1:3,times=2) #x下被赋值为1、2、3重复两次,即1、2、3、1、2、3
- 每次为x赋值都会覆盖前一次的赋值结果
- 除了可以赋值数字外,还可赋值特定字符,前提是真实存在的,如赋值为某一已创建的文件。
- 从向量中提取元素
> x<- rep(1:3,times=2) #x赋值,向量元素为:1、2、3、1、2、3
> x[4] #取x中的第4个元素
[1] 1
> x[-4] #取x中除第4个元素以外的元素
[1] 1 2 3 2 3
> x[2:4] #取x中第2-4个元素
[1] 2 3 1
> x[-(2:4)] #取x中第2-4个元素以外的元素
[1] 1 2 3
> x[c(1,5)] #取第1、5个元素
[1] 1 2
二、数据框
- 读取本地数据
> setwd("C:\\Users\\birdman\\Desktop") #设置工作目录
> read.table(file = "huahua.txt", sep = "\t",header = T) #读取数据框。
X1 X2
1 A 1
2 B NA
3 C NA
4 D 3
5 E NA
> read.table(file = "huahua.txt", sep = "\t",header = F)
V1 V2
1 X1 X2
2 A 1
3 B
4 C
5 D 3
6 E
> a <- read.table(file = "huahua.txt", sep = "\t",header = T) #a赋值为数据框
通过查询和尝试,可得知,header表示表头,T即TRUE,F即FALSE。seq是元素之间的间隔符,\t表示空格,\r表示回车,\n表示回车换行。
- 设置行名和列名
> x<- read.csv("doudou.txt")
> colnames(x) #查看列名
[1] "X1" "X2"
> rownames(x) #查看行名,默认为数字序号
[1] "1" "2" "3" "4" "5"
> colnames(x)[1] <- "bioplanet" #将列名的第一个修改为bioplanet
- read.table:加载带分隔符的数据,默认分隔符为"\t"。
- read.csv:加载带分割符的数据,默认分割符为逗号。
- 导出数据框
> write.table(x,file = "yu.txt",sep = ",",quote=F)
#file:将数据框导入文件yu.txt,如果不存在,则创建一个。
#seq:设置分割符为","。
#quote:字符串是否使用引号表示,默认为TRUE,即使用引号表示。
- 变量的保存与重新加载
> save.image(file="test.RData") #保存所有变量到test.RData中
> save(x, file="test.RData") #保存变量x到文件test.RData中
> load("test.RData") #加载test.RData中的变量
每次保存变量都会覆盖上一次保存的变量,所以要更换文件名!
- 提取元素
> x[1,2] #提取x中第一行第2个数据
[1] 1
> x[2,] #提取x中第二行的数据
bioplanet X2
2 B NA
> x[,2] #提取x中第二列的数据
[1] 1 NA NA 3 NA
> x[1:2] #提取x中第一列到第二列的数据
bioplanet X2
1 A 1
2 B NA
3 C NA
4 D 3
5 E NA
> x[c(1,2)] #提取x中第一列和第二列的数据
bioplanet X2
1 A 1
2 B NA
3 C NA
4 D 3
5 E NA
问题
save(X,file="test.RData")这句代码如果报错object X not found,是为什么,应该怎么解决?
object X not found,即不存在变量X,可能是没有注意到大小写,将变量x写成了X,也有可能是根本不存在这个变量。根本在于检查是否有这个变量