R的数据结构里最需要熟悉的是向量和数据框
数据结构.png
1. 向量
向量由元素组成,元素可以是数字或者字符串(chr)
1.1 标量和向量
标量:一个元素组成的变量,如数字1,字符串“haha”(必须加引号)
向量:多个元素组成的变量 ,如c(1,2,3), c("haha","hihi")
如果对一个变量重复赋值,先一次会被后一次覆盖,以最后一次赋值为准
1.2 向量中提取元素
1.2.1 根据元素位置
z[4] #z的第四个元素
z[-4] #除了第4个元素外剩余的元素
z[3:6] #第3到6个元素
z[-(3:6)] #除了第3-6个元素外的
z[c(1,5,7)] #第1个和第5个、第7个元素
根据元素位置
1.2.2 根据值
z[z==10]#等于10的元素
z[z>5] #大于5的元素
z[z %in% c(1,2,5)]#存在于向量c(1,2,5)中的元素
根据值
2 数据框
2.1 读取本地数据
read.table()
函数是R最基本的函数之一,主要用来读取矩阵表格数据
read.table(file, header = FALSE, sep = "", quote = "\"'",
dec = ".", numerals = c("allow.loss", "warn.loss", "no.loss"),
row.names, col.names, as.is = !stringsAsFactors,
na.strings = "NA", colClasses = NA, nrows = -1,
skip = 0, check.names = TRUE, fill = !blank.lines.skip,
strip.white = FALSE, blank.lines.skip = TRUE,
comment.char = "#",
allowEscapes = FALSE, flush = FALSE,
stringsAsFactors = default.stringsAsFactors(),
fileEncoding = "", encoding = "unknown", text, skipNul = FALSE)
read.csv(file, header = TRUE, sep = ",", quote = "\"",
dec = ".", fill = TRUE, comment.char = "", ...)
read.csv2(file, header = TRUE, sep = ";", quote = "\"",
dec = ",", fill = TRUE, comment.char = "", ...)
read.delim(file, header = TRUE, sep = "\t", quote = "\"",
dec = ".", fill = TRUE, comment.char = "", ...)
read.delim2(file, header = TRUE, sep = "\t", quote = "\"",
dec = ",", fill = TRUE, comment.char = "", ...)
各参数的说明见:R语言中read.table()函数用法详解 - 翔宇亭IT乐园
2.2. 设置行名和列名
colnames() #查看列名
rownames() #查看行名
2.3 数据框导出
write.table(X,file = "haha.txt",sep = ",",quote=F)
#分隔符改为逗号,字符串不加双引号(默认格式带由双引号)
2.4 变量的保存和重新加载
没有处理完的数据保存为RData格式的,下次即可重新加载
save.image(file="hahaha.RData") #保存当前所有变量
save(X,file="test.RData") #保存其中一个变量
load("test.RData") #再次使用时加载
2.5 提取元素
-X[x,y]#第x行第y列
X[x,]#第x行
-X[,y]#第y列
X[y] #也是第y列
-X[a:b]#第a列到第b列
-X[c(a,b)]#第a列和第b列
X$列名
#提取列(不用写括号,支持Tab自动补全,不过只能提取一列)
提取元素
2.6 直接使用数据框中的变量
iris是R语言自带的一个数据框。iris以鸢尾花的特征作为数据来源,常用在分类操作中。该数据集由3种不同类型的鸢尾花的50个样本数据构成。其中的一个种类与另外两个种类是线性可分离的,后两个种类是非线性可分离的。 该数据集包含了5个属性:
Sepal.Length(花萼长度;Sepal.Width(花萼宽度);Petal.Length(花瓣长度);Petal.Width(花瓣宽度),单位都是cm;
种类:Setosa(山鸢尾)、Versicolour(杂色鸢尾),以及Virginica(维吉尼亚鸢尾)。
点击左上角新建一个脚本窗口(Shift+ctrl+N),输入代码保存后在工作目录会得到一个后缀为R的脚本文件
#提取iris数据框某两列作散点图
plot(iris$Sepal.Width,iris$Petal.Width)
问题:save(X,file="test.RData")这句代码如果报错object X not found,是为什么,应该怎么解决?
回答:没有X这个变量或者没有分大小写,再或者没有给它赋值。仔细检查大小写并确认赋值正确应该就可以了吧