澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

澳门新萄京官方网站:福特Explorer需求学习第二章

2019-08-17 作者:www.8455.com   |   浏览(190)

PAJERO语言 壹玖玖玖年改为GNU项目 开源免费

摘要:介绍翼虎语言中常用的数据结构,向量、矩阵、列表、数据库、因子等。主即便它们的创导、索引和简单的运算。

重在内容

各种语言都有和睦的数据结构,这几个数据结构多多少少会稍为相似之处,利用这么些相似之处大多数时候都能进步我们的求学功用。由于初学编程时学的是Python,由此这里比较多地点多会与Python举行相比以便于清楚回想。

PRADO官网 www.r-project.org

数据类型

  • 珍视的数据类型:

    • 数值型:numeric
    • 逻辑型:logical(T/TRUE F/FALSE)
    • 字符型:character
    • 复数型:complex(a bi)
    • 原味型:raw(二进制数据)
    • 缺省型:missing value(NA/not available)

    有关数据类型的详细介绍和操作参见另一篇课程笔记:R魔02_笔记_数据类型。

  • 查阅数据:

    1. 翻开当前系统里的数目对象,重临变量名:ls()

    2. 鉴定区别和调换数据类型:

      类型            辨别                转换
      character       is.character()      as.character()
      complex         is.complex()        as.complex()
      double          is.double()         as.double()
      integer         is.integer()        as.integer()
      logical         is.logical()        as.logical()
      NA              is.na()             as.na()
      numeric         is.numeric()        as.numeric()
      

 研究库罗德中的数据结构

Haval语言数据结构依赖寄存类型类型可分为两类,一类是用来寄放同种类数据的(如int,character,bool等内部的一种等级次序,称为同质),另一类则是可以用来寄放在差别类别的数量,可称之为异质。

LAND是数量分析世界的言语
Mini灵活,通过扩展包来增加功用
绘制作用
代码轻便

数据结构

  • 数据结构包蕴:
    • 向量
    • 矩阵
    • 数组
    • 数据框
    • 因子factor/名义或阶段
  1. 向量:c()

    • 一直创制向量:同向来量中的数据必须是同几个项目标。
    > a <- c(1, -2, 3, -4, 5, 0)
    > b <- c("age","name" , "weight") 
    > C <- c(TRUE, TRUE, FALSE, FALSE) 
    
    > a <- c(2:6)     # 冒号"n:m"表示从n到m,包含n和m。
    # 等价于
    > a <- c(2, 3, 4, 5, 6)
    
    > r <- c(5:1)     #逆序
    > r
    5 4 3 2 1 
    
    # 冒号运算的结果其实也是个向量
    > 2*1:5             #表达式中:的级别最高
    [1] 2 4 6 8 10
    
    • 用函数生成向量:
    # 1. 生成有规律的序列 
    > seq(1,10,2)                   # seq(from, to, by),从1到10,间隔为2。
    [1] 1 3 5 7 9
    > seq(1, by=2, length=10)       #从1开始,间隔为2,总共要10个数。
    [1] 1 3 5 7 9 11 13 15 17 19
    
    > letters[1:30]             #生成字母序列,abcd,26个,第26之后的值为NA
    
    # 2. 重复
    > rep(c(1,2),4)                 # 向量整体4次
    [1] 1 2 1 2 1 2 1 2
    > rep(c(1,2),each=4)            # 按元素重复
    [1] 1 1 1 1 2 2 2 2
    > rep(c(1,2,3,4),c(5,3,4,2))    # 向量元素分别重复5432次。必须一样长。
    [1] 1 1 1 1 1 2 2 2 3 3 3 3 4 4
    
    • 分选向量中的成分
    > a <- c(1, -2, 3, -4, 5, 0)
    > a[3]
    [1] 3
    
    > a[2,3]            # 选择两个
    [1] -2 3
    
    > a[1:4]            # 选择多个连续
    1 -2 3 -4
    
    > a[-2]             # 去掉第2个元素
    1 3 -4 5 0
    
    # 用向量选择
    > a[c(1,3,4)]       # 一定要有c()函数,a[1,2,3]是错的
    
    # 布尔
    > a[a<3]            # 列出小于3的元素
    
    • 用which()函数选拔
    which.max(a)        #()里是向量名。返回下标。
    which.min(a)
    a[which.max(a)]     #返回最大值
    which(a==2)         #所有等于2的元素,的位置/下标。
    which(a>3)
    

    瞩目:向量不能够增加或删除成分。改动向量要求再次赋值。

    • 附:常用的向量总结函数

      sum()           #求和
      max()           #求最大值
      min()           #求最小值
      range()         #求极差(全矩)
      mean()          #均值
      median()        #中数
      var()           #方差
      sd()            #标准差
      sort()          #排序,从小到大
      rev()           #反向排列rev(sort())
      rank()          #给出向量的秩(每个元素的排名)
      prod()          #向量的连乘积
      append()        #添加元素
      replace()       #替换
      match()         #匹配
      pmatch()        #部分匹配
      all()           #判断所有
      any()           #判断部分
      
  2. 矩阵:matrix()暗许按列生成

    • 创造矩阵
    > y <- matrix(1:20, nrow=5, ncol=4)
         [,1] [,2] [,3] [,4]
    [1,]    1    6   11   16
    [2,]    2    7   12   17
    [3,]    3    8   13   18
    [4,]    4    9   14   19
    [5,]    5   10   15   20
    
    > cells <- c(1,4,6,10)
    > rname <- c("r1","r2")
    > cname <- c("c1","c2")
    > mymatrix <- matrix(cells, nrow=2, ncol=2, byrow=TRUE, dimnames=list(rname, cname))
    mymatrix        #byrow=TRUE按行填充
        c1  c2
    r1  1   4
    r2  6   10
    
    > diag(1:4)                 #生成对角矩阵
       [,1] [,2] [,3] [,4]
    [1,] 1 0 0 0
    [2,] 0 2 0 0
    [3,] 0 0 3 0
    [4,] 0 0 0 4
    > diag(4)                   #4阶单位阵
       [,1] [,2] [,3] [,4]
    [1,] 1 0 0 0
    [2,] 0 1 0 0
    [3,] 0 0 1 0
    [4,] 0 0 0 1
    
    • 矩阵索引
    mymatrix <- matrix(1:20, nrow=5, ncol=4)
    > mymatrix[1,2]       #选择矩阵里的元素[行, 列]
    6
    > mymatrix[1:2,2:3]   #第1 2行,2 3列的元素
         [,1] [,2]
    [1,]    6   11
    [2,]    7   12
    
    • 矩阵的演算
    A 10                #所有元素加10
    A*2                 #所有元素乘2
    A*A                 #所有元素乘自己
    A%*%B               #矩阵相乘【A(m,n)的列数(column)与B(n,p)的行数(row)相同才行,得到是一个m行,p列的矩阵】
    dim()               #返回行、列数(如果是array,返回每个维度的行列数
    str(object)         #显示某个对象的结构
    class(object)       #显示某个对象的类或类型
    nrow()              #返回行数
    ncol()              #返回列数
    solve()             #返回逆矩阵【逆矩阵:两个矩阵相乘等于一个单位矩阵(见上)】
    solve(a,b)          #a*x=b,求x。得出的是x的值。
    as.matrix()         #把非矩阵的转换成矩阵
    is.matrix()         #辨别是否矩阵
    diag()              #返回对角元素或生成对角矩阵
    eigen()             #求特征值和特征向量
    chol()              #Choleski 分解  【???】
    svd()               #奇异值分解     【???】
    qr()                #QR 分解        【???】
    det()               #求行列式
    t()                 #矩阵转置
    apply(X, MARGIN, FUN, ...)      #对矩阵应用函数。x:矩阵名;MARGIN:运算范围,1/按行运算,2/按列运算;FUN:调用的函数。得到一个向量。
    rbind()             #合并两个或两个以上的矩阵,按行合并。(列数不变
    cbind()             #按列合并。(行数不变
    
  3. 数组:函数array()

    • 概括说一下。
    > dim1 <- c("A1","A2")
    > dim2 <- c("B1","B2","B3")
    > dim3 <- c("C1","C2","C3","C4")
    > z <- array(1:24, c(2, 3, 4), dimnames = list (dim1, dim2, dim3))
    > z
    , , C1
    
       B1 B2 B3
    A1  1  3  5
    A2  2  4  6
    
    , , C2
    
       B1 B2 B3
    A1  7  9 11
    A2  8 10 12
    
    , , C3
    
       B1 B2 B3
    A1 13 15 17
    A2 14 16 18
    
    , , C4
    
       B1 B2 B3
    A1 19 21 23
    A2 20 22 24
    
  4. 数据框:最常见的数据结构data.frame()

    • 矩阵形式的数量必须是同等品种的,但数量框中各列能够是见仁见智品类的数码。
    • 每一列长度一致。能够是向量、因子、数据矩阵、列表、或任何数据框。
    • 字符向量会被胁持调换来因子
    > patientID<-c(1,2,3,4)
    > age<-c(25,34,28,52)
    > diabetes<-c("Type1","Type2","Type1","Type1")
    > status<-c("Poor","Improved","Excellent","Poor")
    > patientdata<-data.frame(patientID, age, diabetes, status)
    > patientdata
      patientID age diabetes    status
    1         1  25    Type1      Poor
    2         2  34    Type2  Improved
    3         3  28    Type1 Excellent
    4         4  52    Type1      Poor    
    
    patientdata[1:2]           # 选取列
    patientdata[1:2,]          # 选取行
    patientdata[c("diabetes","status")]     # 用列名选取
    patientdata$age                         # 用列名选取的另一种方法
    table(patientdata$diabetes, patientdata$status)       # 名义变量做交叉列联表。
    
    • 使用attach()/detach()和with():能够不用写数据框的名字,直接用数据库中列名。
    attach(patientdata)
    summary(age)
    detach(patientdata)
    
    with(patientdata,{
        summary(age)
        })
    
  5. 因子factor()

    • 分类数据
    • factor(data, levels, labels,...)
    # factors把字符型的名义变量 变为 用数字代表类别。常用于离散型数据。
    patientID<-c(1,2,3,4)
    age<-c(25,34,28,52)
    diabetes<-c("Type1","Type2","Type1","Type1")
    status<-c("Poor","Improved","Excellent","Poor")
    diabetes<-factor(diabetes); diabetes
    status<-factor(status, order=T, levels = c("Poor", "Improved","Excellent"));status          
    # order = T,有序性因子,按字母排序。用levels设定顺序。
    patientdata<-data.frame(patientID, age, diabetes, status)
    str(patientdata)                  # 查看dataframe
    summary(patientdata)
    
  6. 列表list

    • list是五个对象的稳步合集,包括的靶子叫做components/分量。
    • 语句list(变量1=分量1, 变量2=分量2,……)
    • 函数length()、 mode()、 names()能够分别重返列表的尺寸(分量的数码)、数据类型、列表里成分的名字。
    • 要素得以区别品种。迭代。双层中括号[[]]慎选成分,第一维是称呼,第二维才是数值。
    # 创建列表
    #1. 使用list()
    > j <- list(name="Joe",salary=55000, union=T); j
    $name
    [1] "Joe"
    
    $salary
    [1] 55000
    
    $union
    [1] TRUE
    
    #2. 把向量转为列表形式
    z <- vector(mode="list")  
    z[["list"]] <- 3   
    
    # 列表索引
    > j$salary
    [1] 55000    
    
    j[["salary"]]           #注意单层中括号和双层中括号的区别
    j[[2]]
    j[1:2]
    
    # 增加列
    j$sex<-"M"              #增加一个叫做“sex”的列
    
    j[6:8]<-c(E,F,T);j      #增加三列,分别叫做E/F/T,位置在6到8.
    
    # 删除列
    j$sex<-NULL;j           #sex这列就不见了
    

 输入数据

维度 同质 异质
1维 原子向量(Atomic vector) List
2维 矩阵(Matrix) Data frame
多维 Array

付出情形
R RStudio

 导入数据

1、向量(Atomic Vectors)

向量是用于积累int、character、bool等数据的一维数据结构,单个向量中的数据必须具有一样系列。使用函数c()来成立向量。R中的向量能够当做是Python中有所同样数据结构的非嵌套列表。

> v <- c(1:3,'a','b'); v
[1] "1" "2" "3" "a" "b"

那边品尝在贰个向量中贮存数值型和字符型数据,能够窥见输出结果中具备数据都被调换到了字符型数据。
当差别门类的多少使用c()函数成立atomic vector时,因为atomic vector的成分都必须是同质的,所以系统会依照character, double, integer, logical的预先顺序对数据类型举办转移。

 

 标明数据

2、列表(List)

中华V中的列表类似于Python中的字典,能够贮存各个区别的数据结商谈嵌套数据结构,迈凯伦720S中列表能够人工的赋予其授予名字(相当于Python字典中的键,也可视作数据框中的列名)未给予名字时,系统会按索引给本田UR-V列表中逐个数据给予名字。使用list()开创列表。使用names()能够给列表中的种种要素命名。

#列表一般创建方式
mylist <- list(obj1, obj2, ...)
#也可以创建时对列表元素命名
mylist <- list(name1=obj1, name2=obj2, ...)

> l <- list(c(1:3),c(T,F)); l
[[1]]
[1] 1 2 3

[[2]]
[1]  TRUE FALSE

> names(l) <- c('num','bool'); l
$num
[1] 1 2 3

$bool
[1]  TRUE FALSE

> l$num
[1] 1 2 3

1、数据类型
character 字符
numeric 数值型,实数或小数
integer 整型
complex 复数型
logical 逻辑型 类似于boollean

2.1 数据集的概念

3、矩阵(Matrix)

矩阵是二个二维数组,其独具数值类型一样(int,character,bool)。可经过matrix()创制矩阵。matrix可应用下标或行列名来赢得元素,但不协助$name的目录情势。可选择dimnames()rownames()colnames()对其进展matrix的队列举办重命名。

#matrix一般创建方式
mymatrix <- matrix(vector, nrow, ncol, byrow, dimnames)

> m <- matrix(letters[1:12],nrow=3,ncol=4,byrow=TRUE);m
     [,1] [,2] [,3] [,4]
[1,] "a"  "b"  "c"  "d" 
[2,] "e"  "f"  "g"  "h" 
[3,] "i"  "j"  "k"  "l" 
> dimnames(m) <- list(c('one','two','three'),c('J','K','L','V')); m
      J   K   L   V  
one   "a" "b" "c" "d"
two   "e" "f" "g" "h"
three "i" "j" "k" "l"
> m['one','J']; m[1,1]
[1] "a"
[1] "a"
> m$'one'
Error in m$one : $ operator is invalid for atomic vectors

从上边能够看来matrix属于atomic vector。

2、数据结构
Vector 向量
Factor 因子
Array 数组
Matrix 矩阵
Data Frame 数据框
List 列表

数据集平日是由数据整合的一个矩形数组,行表示观测,列表示变量(本书使用统计学家术语)。

4、数组(Array)

数组与矩阵类似,都为同质型的数据结构,可是维度大于2。数组通过array创造。

> dim1 <- c(letters[1:2]); dim2 <- c(letters[3:5]); dim3 <- c(letters[6:9])
> arr <- array(c(1:24),c(2,3,4),dimnames=list(dim1,dim2,dim3)); arr
, , f
  c d e
a 1 3 5
b 2 4 6
, , g
  c  d  e
a 7  9 11
b 8 10 12
, , h
   c  d  e
a 13 15 17
b 14 16 18
, , i
   c  d  e
a 19 21 23
b 20 22 24
> arr[1,2,3]
[1] 15

澳门新萄京官方网站 1
一维:向量、因子 向量属于数值型变量,因子对应于分类变量
二维:矩阵、数据框 矩阵申月素的数据类型是均等的,数据框由向量组成,每一种向量中的数据类型保持一致,向量间的数据类型可以差异样,类似于表结构。
三个维度:数组、列表 数组用的可比少,多维数据结构;列表能够涵盖上边装有的数据结构

数据集的行和列叫法差别,计算学家术语为观看比赛(observation)和变量(variable),数据库分析师术语为记录(record)和字段(田野),数据发现和机械学习课程的切磋者则把它们叫作示例(example)和品质(attribute)。

5、数据框(data.frame)

数据框在情势上与矩阵较为邻近,可是它每一列的数据类型能够分裂,为异质型数据结构。数据框能够采纳data.frame()函数来创立,使用colnames()rownames()来对队列重命名。数据框与python三方库pandas中的DataFrame基本是一样的。
数量框选择成分的法子对比两种,不只能经过下标举办采纳,也能够透过列名称来拓展抉择df$name。同不平日间,在创立数量框时可经过row.names参数钦命用来作为行名称的列。

> s <- c(85:90); a <- rep(c(15,16),3); g <- rep(c('A','B'),3)
> df <- data.frame(s,a,g)
> df
   s  a g
1 85 15 A
2 86 16 B
3 87 15 A
4 88 16 B
5 89 15 A
6 90 16 B
> colnames(df)<-c('score','age','grade'); df
  score age grade
1    85  15     A
2    86  16     B
3    87  15     A
4    88  16     B
5    89  15     A
6    90  16     B
> df[1]
  score
1    85
2    86
3    87
4    88
5    89
6    90
> df[1,2]
[1] 15
> df$score
[1] 85 86 87 88 89 90
> df[c(1,2)]
  score age
1    85  15
2    86  16
3    87  15
4    88  16
5    89  15
6    90  16
> df[c('score','age')]
  score age
1    85  15
2    86  16
3    87  15
4    88  16
5    89  15
6    90  16

若要求频仍增选数据框中的某列数据,可采取attach()detach()、或with()来简化代码。

> attach(df)
> age
[1] 15 16 15 16 15 16
> detach(df)
> age
Error: object 'age' not found
> with(df,{print(age)})
[1] 15 16 15 16 15 16

各类数据结构的要素命名方式如下表

数据类型 函数 接受的参数类型
向量和列表 names 向量
矩阵和数组 dimnames 列表
矩阵和数据框 rowname, colname 向量

3、向量
向量表示一组数据,数据类型一致,向量能够代表行依然列
c() 如:
: 如: 1:10
seq(from(初阶), to(到), by(步长), length.out(钦赐向量的要素个数), along.with(长度与钦命的向量长度一样))

澳门新萄京官方网站 2

6、因子(factors)

因子比较为难知晓,能够将它作为是Python中的set(list),即对向量实行归类总括,每一个独一值算二个二个分类。他有levels()方式,能够得到贰个factor中的全部水平(也即去重后的集合)。他的创办分为三步:(1)将输入的数量转换到character类型;(2)对全数水平举办排序(若未钦定排序则自然排序);(3)使用levels中的水平序号重新编码输入的要素。

> grade <- factor(df$grade);grade
[1] A B A B A B
Levels: A B
> grade <- factor(df$grade, levels=c('B','A'));grade
[1] A B A B A B
Levels: B A
>levels(grade)
[1] "B" "A"

在营造data.frame时,列成分为character的列平时会自动被改动为factors,那日常不是大家想看到的。通过点名stringsAsFactors=FALSE参数可保存原本的character属性。

>  s <- c(85:90); a <- rep(c(15,16),3); g <- rep(c('A','B'),3)
>  df <- data.frame(s,a,g)
> str(df)
'data.frame':   6 obs. of  3 variables:
 $ s: int  85 86 87 88 89 90
 $ a: num  15 16 15 16 15 16
 $ g: Factor w/ 2 levels "A","B": 1 2 1 2 1 2

>  s <- c(85:90); a <- rep(c(15,16),3); g <- rep(c('A','B'),3)
>  df <- data.frame(s,a,g,stringsAsFactors=FALSE)
> str(df)
'data.frame':   6 obs. of  3 variables:
 $ s: int  85 86 87 88 89 90
 $ a: num  15 16 15 16 15 16
 $ g: chr  "A" "B" "A" "B" ...

领到子集:
数字下标(正数:获取钦点成分,从1开端,负数:排除的情趣)
which()函数(按规范来开始展览筛选)

表2-1,能够看到数据集的布局(矩形数组)以及当中包蕴的开始和结果和数据类型。

管理数据的一些实用函数

函数 作用
length 显示对象中元素的数量
dim 显示某个对象的维度
str 查看某个对象的结构
class 查看某个对象的类型
mode 查看某个对象的模式
names 查看某个对象中各个成分的名称
cbind 按列合并兑现
rbind 按行合并对象
head 查看某个对象的开始部分
tail 查看某个对象的结尾部分
ls 显示当前的变量列表
rm 删除一个或更多对象。语句rm(list=ls())将删除当前工作环境的所有对象(隐藏对象除外)
> df
   s  a g
1 85 15 A
2 86 16 B
3 87 15 A
4 88 16 B
5 89 15 A
6 90 16 B
> length(df)
[1] 3
> dim(df)
[1] 6 3
> class(df)
[1] "data.frame"
> mode(df)
[1] "list"
> names(df)
[1] "s" "a" "g"
> gender<-rep(c('male','female'),3);df<-cbind(df,gender=gender);df
   s  a g gender
1 85 15 A   male
2 86 16 B female
3 87 15 A   male
4 88 16 B female
5 89 15 A   male
6 90 16 B female
> df<-rbind(df,c(100,10,'A','female'));df
    s  a g gender
1  85 15 A   male
2  86 16 B female
3  87 15 A   male
4  88 16 B female
5  89 15 A   male
6  90 16 B female
7 100 10 A female
> ls()
 [1] "a"          "arr"        "d"          "depth_dist" "df"         "dim1"      
 [7] "dim2"       "dim3"       "g"          "gender"     "grade"      "i39"       
[13] "l"          "m"          "model"      "mpg2"       "norm"       "oplot"     
[19] "p"          "plot"       "s"          "sleep"      "v"  
#向量
(x1<- c(10,11,12,13))
(x2<- 1:10)
x3<- seq(1,5,1) #from 1 to 5 by 1
x4<- seq(5,by=2,length.out=8) #向量中元素个数为8
x5<- seq(2,by=3, along.with = x4) # along.with向量个数与x4一致
x5[1:5]
x5[c(1,2,3,4,5)]
x5[-1:-5]   #不要下标为1-5的元素

which(x5>5) #大于5的向量下标
x5[which(x5>10)] #大于5的向量值

PatientID是行/实例标记符,AdmDate是日期型变量,Age是一而再型变量,Diabetes是名义型变量,Status是有序型变量。

 

在奥迪Q3中, PatientID 、 AdmDate 和 Age 为数值型变量,而 Diabetes 和 Status则为字符型变量。其余,你要求各自告诉Murano: PatientID 是实例标记符, AdmDate 含有日期数据,Diabetes 和 Status 分别是名义型和有序型变量。Odyssey将实例标志符称为 rownames (行名),将连串型(富含名义型和有序型)变量称为因子( factors )。

4、因子
因子用于分类变量,有项目
factor()
gl()

2.2 数据结构

#因子
f<-c('a','a','b','o','ab','ab')
f<-factor(c('a','a','b','o','ab','ab')) #创建因子,level默认按字母排序

unclass(f) #查看因子

f<-factor(c('a','a','b','o','ab','ab'),levels = c('a','b','o','ab')) #指定因子对应的level

unclass(f) #

f1<- gl(4,3,labels = c('blue','red','green','yellow')) #4个级别,每个级别重复3次,labels的内容
f1

unclass(f1)

福睿斯具有比很多用来存款和储蓄数据的指标类型,包括标量、向量、矩阵、数组、数据框和列表。

 

澳门新萄京官方网站 3

5、矩阵
行和列

留心:在景逸SUV中,术语 对象(object)是指能够赋值给变量的任何事物,满含常量、数据结构、函数,以至图形。对象都具备某种形式,描述了此指标是怎么存款和储蓄的,以及有个别类。

澳门新萄京官方网站:福特Explorer需求学习第二章,Rubicon学习笔记_01_数据类型。生成矩阵
matrix()
由向量派生
由向量组合生成

2.2.1向量

操作
做客元素
队列命名

向量是用来存款和储蓄数值型、字符型或逻辑型数据的一维数组。实行组合功用的函数 c() 可用来创制向量。各个向量如下例所示:

矩阵运算
矩阵加法
1.矩阵 n 种种要素加n
2.矩阵 矩阵 对应成分相加

a <- c(1, 2, 5, 3, 6, -2, 4) #数值型向量

矩阵乘法
1.矩阵*n 种种要素乘n
2.矩阵*矩阵 行列相乘(矩阵1 m行*n列 矩阵2 p*q 必要n==p 结果矩阵为 m*q)
3.矩阵成分*矩阵成分 对应成分相乘
澳门新萄京官方网站 4
单位矩阵
要素都为1 n*n方阵

b <- c("one", "two", "three") #字符型向量

对角矩阵
对角成分为1 其余的为0 n*n方阵

c <- c(TRUE, TRUE, TRUE, FALSE, TRUE, FALSE) #逻辑型向量注意,单个向量中的数据必须怀有同样的种类或情势(数值型、字符型或逻辑型)。同一直量中无法混杂分歧情势的数码。

矩阵转置
n*m m*n

如何访问向量中的成分?通过在方括号中给定成分所处地点的数值。如下所示:

#矩阵

#创建矩阵:
#方法一:使用matric(nrow=?,ncol=?)
x<-matrix(nrow=2,ncol=3) #nrow 指定行, ncol指定列
x
x<-matrix(1:18,nrow = 3,ncol = 6) # 3行,6列,元素值由1:18填充,默认一列一列顺序填充
x
x<-matrix(1:18,nrow = 3, ncol = 6, byrow = T) # 3行,6列,元素值由1:18填充,指定行顺序填充
x

#方法二: dim(a) 通过dim 传递向量
a<-1:18
dim(a)<-c(3,6) #3行6列,行顺序填充
x

#方法三: rbind或cbind进行拼接
x<-1:10
y<-11:20
z<-21:30

m1 = rbind(x,y,z) #以行为单位进行拼接
m2 = cbind(x,y,z) #以列为单位进行拼接
m1
m2

#获取矩阵元素
x<-matrix(1:18,nrow = 3,ncol = 6,byrow = T)
x

x[1,2] #第1行第2列
x[1,] #第1行
x[,2] #第2列
x[,c(2,3,4)] #第2 3 4列
x[c(1,2),] #第1 2行
x[c(1,2),2:4] #第1 2行 第2 3 4列


#行列命名
colnames(x)<-c('C1','C2','C3','C4','C5','C6') #列的名字
rownames(x)<-c('R1','R2','R3')  #行的名字

x['R1','C1']
x[c('R1','R2'),c('C1','C2')]


#矩阵运算

m1<-matrix(1:18,nrow = 3,ncol = 6, byrow = T)
m2<-matrix(19:36,nrow = 3, ncol = 6, byrow = T)
m1
m2

#矩阵加法
m1 10   #矩阵 n
m1 m2   #矩阵 矩阵

#矩阵乘法
m1*10  #矩阵*n
m1*m2  #矩阵对应元素相乘
m1 %*% t(m2)  #矩阵*矩阵 矩阵乘法 行列相乘

#对角矩阵
diag(4)  #4*4矩阵 对角元素都为1
diag(c(1,2,3,6))  #4*4矩阵,对角元素为1,2,3,6

x<-matrix(1:16,4,4)
diag(x) #显示矩阵x的对角元素值


#解方程组
m<-diag(4)
m
b<-1:4
solve(m,b) #m %*% x=b 求x

> a <- c("k", "j", "h", "a", "c", "m")

 

> a[3] #做客向量中第多少个因素

6、数据框
记录与域

[1] "h"

#数据框

#创建数据框 
a<-data.frame(fx = rnorm(10,10,2),
              fy = runif(10,10,20),
              fmonth = 1:10 ) 

a[1,1]
a[1,]
a[,2]

a$fx  #通过$fx取列信息
a[[1]]#通过[[]]获取列信息



search()  #查询

attach(a)  #attach 数据到 search路径
fx         #直接使用
detach(a)  #detach 数据

search()  #查询


a<-with(a, fx)                #访问数据框成员


#新增修改列
a<-within(a,{fx=1:10          #通过within来进行修改,和新增列
             fz=11:20})

#新增列
a$fz = 11:20
a$fz = a$fx a$fy

#列存在则修改
a$fx = 1:10

#查询数据集
b = subset(a,fx>1&fmonth==8,select=c(fx,fmonth))  #select 列过滤,fx>1&fmonth==8 行过滤


b=edit(a)  #修改后的数据集赋值给另一个数据集
b
fix(a)     #直接修改数据集内容
a

> a[c(1, 3, 5)] #访谈向量中率先、三、多少个要素

 

[1] "k" "h" "c"

7、列表
成分

> a[2:6] #访谈向量中第二至第两个要素

制造列表
list()

[1] "j" "h" "a" "c" "m"

操作
列表成分
[[]]
$

2.2.2 矩阵

#列表

#创建列表
a<-list(x=1:10,y=matrix(1:16,4,4),z=data.frame())

names(a) <- c('c1','c2','c3') #修改成分名称

c
c=a['y']  #在列表中通过[]取出的对象类型还是列表
c[2,1]    
class(c)  #查看类型为list

c=a[['y']] #在列表中通过[[]]取出的对象类型为实际对象类型矩阵
c[2,1]
class(c)  #查看类型为matrix

a$y[2,1]  #获取矩阵的元素

矩阵是三个二维数组,只是每一个成分都有着同样的方式(数值型、字符型或逻辑型)。可透过函数matrix() 创造矩阵。

 

myymatrix <- matrix(vector, nrow=number_of_rows, ncol=number_of_columns,byrow=logical_value, dimnames=list(char_vector_rownames, char_vector_colnames))

8、数组
array

其间 vector 满含了矩阵的成分,nrow和ncol 用以钦命行和列的维数,dimnames 包罗了可选的、以字符型向量表示的行名和列名。选项 byrow 则表明矩阵应当按行填充(byrow=TRUE )仍旧按列填充(byrow=FALSE ),私下认可境况下按列填充。

#数组
(a=array(1:60,c(3,4,5)))  #数组三维
a[1,2,3]

澳门新萄京官方网站 5

9、数据类型转变

创立四个5*4的矩阵。

检查数据类型 is.伊始
is.character
调换数据类型 as.早先
as.character

澳门新萄京官方网站 6

x=c(1:2,'hello',T)
x
mode(x)      #查看数据类型
class(x)     #查看数据结构

is.vector(x)

y<-matrix(1:20,c(4,5))
mode(y)      #数据类型是numeric
class(y)     #数据结构是matrix

y<-as.data.frame(y) #数据类型转换matrix->dataframe
y

按行填充的2*2矩阵。

 

澳门新萄京官方网站 7

10、分之结构
if...else...结构
if(condition){...}
else{...}

按列填充的2*2矩阵。

ifelse函数

澳门新萄京官方网站 8

#分支结构
(Brand<-paste(c('Brand'),1:9,sep='')) #粘合一起
                                     #"Brand1" "Brand2" "Brand3" "Brand4" "Brand5" "Brand6" "Brand7" "Brand8" "Brand9"
(PName<-paste(c('Dell'),1:9,sep=' '))
(Mem<-rep(c('1G','2G','4G'),times=3)) #重复
                                      #"1G" "2G" "4G" "1G" "2G" "4G" "1G" "2G" "4G"
(Feq=rep(c('2.2G','2.8G','3.3G'),each=3))
(Price=rep(c(1000,2000,5000),3))
PC=data.frame(Brand,PName,Mem,Feq,Price)
##分支结构
#if..else
PC
PC$PD=rep('Cheap',9)

for (i in 1:nrow(PC)){     #1:nrow(PC)从第1行到最后一行
  if (PC[i,'Price']>3000){ #取值进行比较
    PC[i,'PD']='Expensive' #修改值
  }
}

PC

#ifelse函数
PC$PD2=ifelse(PC$Price>3000,'Expensive','Cheap')  #向量化运算

PC

c

如上海体育场地: 创制了一个内容为数字1到10的2×5矩阵。暗中同意意况下,矩阵按列填充。然后,我们分别选拔了第二行和第二列的成分。接着,又采取了第一行第四列的因素。最终选用了坐落第一行第四、第五列的要素。

11、循环结构
for(n in x){...}

矩阵都以二维的,和向量类似,矩阵中也仅能蕴涵一种数据类型。

while(condition){...}

2.2.3 数组

repeat{...break}

数组(array)与矩阵类似,可是维度能够抢先2。数组可通过 array 函数创制。

break next

myarray <- array(cecior,dimensions,dimnames)。在那之中 vector( 下图中的“1:24”) 满含了数组中的数据, dimensions (下图中的“c(2,3,4)”)是二个数值型向量,给出了一一维度下标的最大值,而 dimnames 是可选的、各维度名称标签的列表。

#循环结构
for (x in 1:5){
  print (x^2)
}

i=1
while (i<6){
  print (i^2)
  i=i 1
}

i=1
repeat {
  print (i^2)
  i=i 1
  if (i>5) break
}

澳门新萄京官方网站 9

 

上例中借使c(2,3,4)数值被改成则提示出错,“length of 'dimnames' [1] not equal to array extent”。数组的维度供给符合数值型向量给出的各维度下标最大值。

12、函数
自定义函数

像矩阵同样,数组中的数据也只能具有一种方式。从数组中选取元素的措施与矩阵一样。z[1,2,3]相当于A1B2C3为15。

myfunc =function(par1,par2,...){
...
}

2.2.4 数据框

援用函数文件
source('D:/basic.R', encoding = 'UTF-8')

是因为不一样的列能够涵盖不一致形式(数值型、字符型等)的数额,数据框的概念较矩阵来说更是相似。它与你平凡在SAS、SPSS和Stata中看看的多寡集类似。数据框将是您在锐界中最常管理的数据结构。

翻开源码
myfunc #终点展现
page(myfunc) #用第三方编辑器查看

下表所示的病例数据集带有了数值型和字符型数据。由于数量有各样情势,不可能将此数据集归入二个矩阵。在这种情形下,使用数据框是顶级选项。

#函数
myadd=function(a,b,c){
  return (a b c)
}



mystat=function(x,na.omit=FALSE){
  if (na.omit){
    x=x[!is.na(x)]
  }
  m=mean(x)
  n=length(x)
  s=sd(x)
  skew=sum((x-m)^3/s^3)/n
  return (list(n=n,mean=m,stdev=s,skew=skew))
}

数码框可通过函数 data.frame() 创立: mydata <- data.frame(col1,col2,col3,…)。个中列向量 col1 、 col2 、 col3 等可为任何类型(如字符型、数值型或逻辑型)。每一列的称号可由函数 names 钦命。

 

澳门新萄京官方网站 10

13、向量化运算和apply家族

.选择多少框瓜时素的点子中注意$号是新出现的。它被用来抉择叁个加以数据框中的某些特定变量。比方:> table(patientdata$diabets,patientdata$status),表示生成高血糖类型变量 diabetes 和病况变量 status 的列联表。

#向量化
x=1:5

(y=x^2)

(y=matrix(1:16,4,4))
(z=y^2)

(x=1:5)
(y=11:15)
(x y)

y>=13

ifelse(x%%2==0,'A','B')

x=data.frame(pv=rnorm(100,20,3),
             uv=rnorm(100,40,4),
             ip=runif(100,40,50))


apply(x,MARGIN = 2,mean)               #在列的方向上进行mean运算
apply(x,MARGIN = 2,quantile,probs=c(0.1,0.5,0.9)) #在列的方向上进行quantile运行

001 attach()、detach()、和with()的施用。attach()函数可将数据框增加到Lacrosse的搜索路线中,detach()函数将数据框从寻觅路线中移除。函数 attach() 和 detach() 最棒在您分析一个单身的数据框,况且不太大概有四个同名对象时选择。with()函数用法略。

 

002 实例标记符

澳门新萄京官方网站 11

2.2.5因子

项目(名义型)变量和有序体系(有序型)变量在PRADO中称之为因子(factor)。因子在奥德赛中国和亚洲常主要,因为它调节了数额的辨析方法以及怎样进展视觉呈现。

名义型变量是从未各种之分的品种变量。慢性高血糖类型 Diabetes ( Type1 、 Type2 )是名义型变量的一例。有序型变量表示一种顺序关系,而非数量关系。病情Status ( poor 、improved 、 excellent )是顺序型变量的三个演示。

澳门新萄京官方网站 12

实际使用如下:

澳门新萄京官方网站 13

2.2.6 列表

一般的话,列表正是局地指标(或成分,component)的稳步聚焦。能够使用函数 list() 创造列表:mylist <- list(object1, object2, ...)。在那之中的对象能够是最近结束讲到的其余协会。

list列表的第一。首先,列表允许以一种轻松的点子组织和再度调用不相干的消息。其次,大多奇骏函数的运维结果都以以列表的形式再次来到。

澳门新萄京官方网站 14

2.3 数据的输入

2.3.1 使用键盘输入数据。对于相当大的数据集,首要从现存的文书文件、Excel手表格、计算软件或数据库中程导弹入数据。

2.3.2 从带分隔符的文本文件导入数据。使用 read.table() 从带分隔符的公文文件中程导弹入数据。帮衬参考help(read.table)。

2.3.3 导入 Excel 数据。函数read.xlsx() 导入叁个工作表到一个数额框中。最简便的格式是 read.xlsx(file, n)。使用install.packages("xlsx")下载xlsx包,使用以下代码

library(xlsx)

workbook <- "c:/myworkbook.xlsx"

mydataframe <- read.xlsx(workbook, 1) 导入工作簿myworkbook.xlsx 的首先个表。

2.3.4 导入 XML 数据

2.3.5 从网页抓取数据

2.3.6 导入 SPSS 数据。使用函数 read.spss() 导入到ENVISION中。下载安装Hmisc 包。install.packages("Hmisc")

2.3.7 导入 SAS 数据

2.3.8 导入 Stata 数据

2.3.9 导入 NetCDF 数据

2.3.10 导入 HDF5 数据

2.3.11 做客数据库管理种类

2.3.12 通过 Stat/Transfer 导入数据

2.4 数据集的标明

为了使结果更易解读,数据剖析职员常见会对数据集进行标记。

2.5 管理多少对象的实用函数

澳门新萄京官方网站 15

创建于 2017-01-23

本文由澳门新萄京官方网站发布于www.8455.com,转载请注明出处:澳门新萄京官方网站:福特Explorer需求学习第二章

关键词: