R语言是也可以说是一门面向对象的语言,向量是作为其最基础的对象来进行运算的
使用c来创建向量
#R语言中的向量是对象
#基本对象是向量
#用c来创建
c(1,2,3,4)
#对字符串建立向量
c('cao','kai')
#数值向量做四则运算
#若是两个不同长度的向量,短的向量会重复出现
c(1,2,3,4) + c(1,2)
#使用冒号来创建向量
1:6
1:6
#向量的;逻辑运算是对中间向量进行一一对比
c(1,2,3,4) > c(1,1,1,1)
c(1,2,3,4) > c(1,1,1,1)
函数的使用
#函数的创建 以exp为例
#使用函数提示 用 tab 以ex开头的所有函数 参数也可以用tab
#以向量作为参数
exp(c(1,2,3,4))
#赋值操作 用<-
#快捷键是alt键加横杠 来创建<-
x <- c(1,2,3,4)
x
#从变量中取子集
y <- log(x)
y(1)
x[1:3]
#用数值向量或逻辑向量做索引
x[x>1]
#数组是一个多维的向量
x <- 1:12
a <- array(data = x,dim = (3,4))
#取出第二行 第二列
a[2,2]
用数组来创建的时候,需要指明其长度必须一致 ,用array
当类型不一致的时候,可以用数据框来建立
#数组中所有的都是相同数据类型
#数据框,类型可以不一样 但长度必须一样
city <- c('bj','sh','hz')
age <- c(23,43,51,32,60)
sex <- c('F','M','F','M','M')
people <- data.frame(city,age,sex)
people
people
people
people[2,3]
#用美元符号来取
people$age
people$age>30
people[people$age>30,]
使用美元符号来快速访问其中的元素
用列表来进行创建
#列表为不同元素创建不同的长度
mylist <- list(age=age,city=city,sex=sex)
mylist
mylist[1]
用对象来进行创建
用对象来进行创建
#构成符合的对象 用class对象来进行观察
class(people)
clas(mylist)
class(mylist)
attributes(people)
类中的不同函数
代码为
#str函数
str(people)
因此主要的就是这几个
整体的代码如下
#R语言中的向量是对象
#基本对象是向量
#用c来创建
c(1,2,3,4)
#对字符串建立向量
c('cao','kai')
#数值向量做四则运算
#若是两个不同长度的向量,短的向量会重复出现
c(1,2,3,4) + c(1,2)
#使用冒号来创建向量
1:6
1:6
#向量的;逻辑运算是对中间向量进行一一对比
c(1,2,3,4) > c(1,1,1,1)
c(1,2,3,4) > c(1,1,1,1)
#函数的创建 以exp为例
#使用函数提示 用 tab 以ex开头的所有函数 参数也可以用tab
#以向量作为参数
exp(c(1,2,3,4))
#赋值操作 用<-
#快捷键是alt键加横杠 来创建<-
x <- c(1,2,3,4)
x
#从变量中取子集
y <- log(x)
y(1)
x[1:3]
#用数值向量或逻辑向量做索引
x[x>1]
#数组是一个多维的向量
x <- 1:12
a <- array(data = x,dim = (3,4))
#取出第二行 第二列
a[2,2]
a
#数组中所有的都是相同数据类型
#数据框,类型可以不一样 但长度必须一样
city <- c('bj','sh','hz')
age <- c(23,43,51,32,60)
sex <- c('F','M','F','M','M')
people <- data.frame(city,age,sex)
people
people
people
people[2,3]
#用美元符号来取
people$age
people$age>30
people[people$age>30,]
#列表为不同元素创建不同的长度
mylist <- list(age=age,city=city,sex=sex)
mylist
mylist[1]
#构成符合的对象 用class对象来进行观察
class(people)
clas(mylist)
class(mylist)
attributes(people)
#str函数
str(people)
R中的特殊数字有Inf -Inf 表示无穷大,NaN 和Na表示不存在的数,可以用assign来赋值,判断两数相等,最好用all.equal(sqrt(2)^2,2),他有一个容忍度为1e-8,
逻辑赋值 可以用 any all 只要有一个为true 则其为true
R中的几个概念
R中的所有变量都是一个类,来表明这个变量是属于什么类型的,数字是numeric 逻辑值是logical h还有其他常见的量 例如“字符 character 存储类别数据的因子factor 还有存储二进制的raw 无需像C一样一\0来结束字符串
可以用 is来进行判断 是不是属于该类
is.character('he')
转化类型 用as
x <- '12'
as(x,'numeric')
summary 可以进行信息的汇总
fac <- factor(sample(letters[1:5],replace = TRUE))
summary(fac)
head显示前面的一部分,str显示对象的结构用View 来显示为电子表格,edit 和fix允许以手动的形式来更改数据
可以利用vector函数来建立向量 结果中的值为 0 false 或空字符串
> vector("numeric",5)
[1] 0 0 0 0 0
亦可以以下面几种方式来建立
> numeric(5)
[1] 0 0 0 0 0
创造一个序列
> seq.int(3:12)
[1] 1 2 3 4 5 6 7 8 9 10
seq_len用于创建一个从1开始到n的序列
> seq_len(5)
[1] 1 2 3 4 5
>
等等还有许多个
向量的长度length
为向量赋值长度
> #为向量赋值长度
> p <- c(1,2,3,4,5)
> vector('numeric',5)
[1] 0 0 0 0 0
> p <- c(1,2,3,4,5)
> p
[1] 1 2 3 4 5
> length(p) <- 3
> p
[1] 1 2 3
>
为向量进行命名
> x <- 1:4
> names(x) <- c('a','b','c','d')
> x
a b c d
1 2 3 4
>
rep函数创建同等长度的向量
> rep(1:5,3)
[1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
通过可以使用cbind和rbind函数来合并两个矩阵
两个矩阵的加减乘除运算依然适用
矩阵的内乘和外乘是不一样的
%*% %o% outer
列表可以被认为是递归的向量 而矩阵数组等可以被认为是原子的向量,因此列表可以包含其他的列表,
> is.atomic(list())
[1] FALSE
> is.recursive(list())
[1] TRUE
> is.recursive(numeric())
[1] FALSE
>
列表也有长度但没有维度
算术运算对列表不起作用 因为列表的每个元素不同,所以相加并没有什么意思 但如果元素的类型相同,则可以进行算术运算
向量与列表之间的转化可以用as.list() 来做
NULL和NA的区别 NA是一个标量值,而NULL表示的是一个空值,不占用任何空间
> is.null(NA)
[1] FALSE
成对列表的使用 基本上是在formal 的时候使用
返回一个函数参数的成对列表
> a <- formals(sd)
> a
$x
$na.rm
[1] FALSE
> ?formal
No documentation for ‘formal’ in specified packages and libraries:
you could try ‘??formal’
> ?formal
No documentation for ‘formal’ in specified packages and libraries:
you could try ‘??formal’
> ?formals
> class(a)
[1] "pairlist"
>
中间是一点错误
列表是每一个元素的类型都可以不同 ,数据框是每列的类型可以不同,但一列中的类型必须相同
t是transpose的缩写,因此可用这个对矩阵进行转置,如果两个数据框的列相同,可以用merge函数进行合并