学习R语言第一天(“纯种”’笔记)
一、变量和常量
单纯的 a 在R语言中是个变量,它可以赋值成任何东西
a=1 #将1赋值给a,以后的 a 就是1了
a=2 #将2赋值给a,以后的 a 就是2了
'a' a加引号,a变成一个字符,是常量。
可以理解为加上引号就变成一个固定的数字,不加引号必须就赋值成其他东西
> 'a' #此时a是一个字母 类比于1,2,3 等价于一个字符
[1] "a"
> 'abcd'
[1] "abcd"
因此凡英文字母想作为常量出现必须加单引号,不加会报错(因为a没有赋值,系统不认为a是一个常量)
> a
Error: object 'a' not found
> abcd
Error: object 'abcd' not found
二、向量,矩阵,数组,数据框,列表
向量可以是 字符型(就是加引号的)、数值型、逻辑型
>a=1 #1个元素的向量
>a=c(1,2,3) #3个元素的向量 c() 是一个创造向量的函数。
> a = c(10, 20, 30, 40, 50)
> a[2]
[1] 20
#R 也可以方便的取出向量的一部分:
> a[1:4] # 取出第 1 到 4 项,包含第 1 和第 4 项
[1] 10 20 30 40
> a[c(1, 3, 5)] # 取出第 1, 3, 5 项
[1] 10 30 50
> a[c(-1, -5)] # 去掉第 1 和第 5 项
[1] 20 30 40
矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,属于二位结构,一个二维矩阵,属于数组的范畴。详细教程参考https://www.runoob.com/r/r-matrix.html
数组(Array)数组是用于储存多个相同类型 数据的集合。数组可以跨越多个维度。
数组中的各元素的存储是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起。
数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。例如,a[0]表示名字为a的数组中的第一个元素,a[1]代表数组a的第二个元素,以此类推。详细教程参考https://www.runoob.com/r/r-array.html
#R 语言数组创建使用 array() 函数,该函数使用向量作为输入参数,可以使用 dim 设置数组维度。
array() 函数语法格式如下:
array(data = NA, dim = length(data), dimnames = NULL)
##参数说明:
data 向量,数组元素。
dim 数组的维度,默认是一维数组。
dimnames 维度的名称,必须是个列表,默认情况下是不设置名称的。
R 因子用于存储不同类别的数据类型,例如人的性别有男和女两个类别,年龄来分可以有未成年人和成年人。
R 语言创建因子使用 factor() 函数,向量作为输入参数。
factor() 函数语法格式:
factor(x = character(), levels, labels = levels,
exclude = NA, ordered = is.ordered(x), nmax = NA)
###参数说明:
x:向量。
levels:指定各水平值, 不指定时由x的不同值来求得。
labels:水平的标签, 不指定时用各水平值的对应字符串。
exclude:排除的字符。
ordered:逻辑值,用于指定水平是否有序。
nmax:水平的上限数量。
数据框(Data frame)可以理解成我们常说的"表格"。数据框是 R 语言的数据结构,是特殊的二维列表。数据框每一列都有一个唯一的列名,长度都是相等的,同一列的数据类型需要一致,不同列的数据类型可以不一样。详细教程参考https://www.runoob.com/r/r-data-frame.html
R 语言数据框使用 data.frame() 函数来创建,语法格式如下:
data.frame(…, row.names = NULL, check.rows = FALSE,
check.names = TRUE, fix.empty.names = TRUE,
stringsAsFactors = default.stringsAsFactors())
##参数说明
row.names: 行名,默认为 NULL,可以设置为单个数字、字符串或字符串和数字的向量。
check.rows: 检测行的名称和长度是否一致。
check.names: 检测数据框的变量名是否合法。
fix.empty.names: 设置未命名的参数是否自动设置名字。
fix.empty.names: 设置未命名的参数是否自动设置名字。
stringsAsFactors: 布尔值,字符是否转换为因子,factory-fresh 的默认值是 TRUE,可以通过设置选项(stringsAsFactors=FALSE)来修改。
print(table) ##查看 table 数据
table = data.frame(
姓名 = c("张三", "李四"),
工号 = c("001","002"),
月薪 = c(1000, 2000)
)
print(table) # 查看 table 数据
#执行以上代码输出结果为:
姓名 工号 月薪
1 张三 001 1000
2 李四 002 2000
我们可以使用 cbind() 函数将多个向量合成一个数据框;
# 创建向量
a <- c("Google","Runoob","Taobao")
b <- c(222,111,123)
c <- c("www.google.com","www.runoob.com","www.taobao.com")
# 将向量组合成数据框
addresses <- cbind(a,b,c)
# 查看数据框
print(addresses)
#执行以上代码输出结果为:
a b c
[1,] "Google" "222" "www.google.com"
[2,] "Runoob" "111" "www.runoob.com"
[3,] "Taobao" "123" "www.taobao.com"
如果要对两个数据框进行合并可以使用 rbind() 函数;
table = data.frame(
姓名 = c("张三", "李四","王五"),
工号 = c("001","002","003"),
月薪 = c(1000, 2000,3000)
)
newtable = data.frame(
姓名 = c("小明", "小白"),
工号 = c("101","102"),
月薪 = c(5000, 7000)
)
result <- rbind(table,newtable)# 合并两个数据框
print(result)
姓名 工号 月薪
1 张三 001 1000
2 李四 002 2000
3 王五 003 3000
4 小明 101 5000
5 小白 102 7000
列表(list)是R 语言的对象集合,可以用来保存不同类型的数据,可以是数字、字符串、向量、另一个列表等,当然还可以包含矩阵和函数。且元素多少可以不等。数据框每一列元素要相等。
R 语言创建列表使用 list() 函数。我们创建一个列表,包含字符串、向量和数字。详细教程参考https://www.runoob.com/r/r-list.html
list_data <- list("runoob", "google", c(11,22,33), 123, 51.23, 119.1) #将list赋值给list_data
我们可以使用 names() 函数给列表的元素命名
三、函数(简单概括一下)
c() #函数生成。
function() #定义函数。
library() #使用包。
install.packages("要安装的包名") #安装包。
getwd() #获取当前工作目录。
setwd() #设置当前工作目录。
str(table) # 获取数据结构
paste() # 函数用于使用指定对分隔符来对字符串进行连接,默认对分隔符为空格。
nchar() #函数用于计数字符串或数字列表的长度。
print() #输出。
summary() #可以显示数据框的概要信息。
sink() #函数可以把控制台输出的文字直接输出到文件中去。
sum() #求和。
mean() #求平均值。
var() #方差。
sd() #标准差。
min() #最小值。
max () #最大值。
range() #取值范围(二维向量,最大值和最小值)。
lm() #函数进行线性回归。
rep() #产生重复出现的数字序列。
seq () #生成有间隙的等差数列。
as.numeric(b[1,]) #改变变量类型
.libPaths() #找安装路径
head() #看表头
dev.new() #新建画板
plot() #绘制点线图,条形图,散点图.
barplot( ) #绘制条形图
dotchart( ) #绘制点图
pie( ) #绘制饼图.
pair( ) #绘制散点图阵
boxplot( ) #绘制箱线图
hist( ) #绘制直方图
scatterplot3D( ) #绘制3D散点图.
低级绘图函数:
par() #可以添加很多参数来修改图形
title( ) #添加标题
axis( ) #调整刻度
rug( ) #添加轴密度
grid( ) #添加网格线
abline( ) #添加直线
lines( ) #添加曲线
text( ) #添加标签
legend() #添加图例
dev.off() #关闭图形设备
row.names行名
col.names列名
向量型(Vector)
双整型double
整型integer
字符型character
逻辑型logical
复数类型complex
原始类型raw
矩阵型(Matrix)和数组型(Array)
数据框架型(Data Frame)及列表型(List)
创建字符时,有字符有数值,创建的向量就全变成字符 #向量有优先级
NA 代表的是"缺失",NULL 代表的是"不存在"。
NA 缺失就像占位符,代表这里没有一个值,但位置存在。
NULL 代表的就是数据不存在。
字符串
> toupper("Runoob") # 转换为大写
[1] "RUNOOB"
> tolower("Runoob") # 转换为小写
[1] "runoob"
> nchar("中文", type="bytes") # 统计字节长度
[1] 4
> nchar("中文", type="char") # 总计字符数量
[1] 2
> substr("123456789", 1, 5) # 截取字符串,从 1 到 5
[1] "12345"
> substring("1234567890", 5) # 截取字符串,从 5 到结束
[1] "567890"
> as.numeric("12") # 将字符串转换为数字
[1] 12
> as.character(12.34) # 将数字转换为字符串
[1] "12.34"
> strsplit("2019;10;1", ";") # 分隔符拆分字符串
[[1]]
[1] "2019" "10" "1"
> gsub("/", "-", "2019/10/1") # 替换字符串
[1] "2019-10-1"
> class(a) # 数值类型不相容的时候查变量类型是否不符合函数类型