<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      R學(xué)習(xí)筆記(2):R中的數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)

      本文最新版已更新至:http://thinkinside.tk/2013/05/09/r_notes_2_data_structure.html

      盡管前面提到R是面向?qū)ο蟮模莻€(gè)人認(rèn)為R中的所謂對(duì)象其實(shí)只是一種結(jié)構(gòu)(struct)。還是要使用函數(shù)對(duì)其進(jìn)行操作。

      R中的數(shù)據(jù)結(jié)構(gòu)主要面向《線性代數(shù)》中的一些概念,如向量、矩陣等。值得注意的是,R中其實(shí)沒有簡單數(shù)據(jù)(數(shù)值型、邏輯型、字符型等),對(duì)于簡單類型會(huì)自動(dòng)看做長度為1的向量。比如:

      > b=5
      > length(b)
      [1] 1
      > typeof(b)
      [1] "double"
      > mode(b)
      [1] "numeric"

      R中最重要的數(shù)據(jù)結(jié)構(gòu)是向量(vector)和矩陣(matrix)。

      向量由一系列類型相同的有序元素構(gòu)成;矩陣是數(shù)組(array)的一個(gè)特例:維數(shù)為2的數(shù)組;而數(shù)組又是增加了維度(dim)屬性的向量。

      除此之外,列表(list)和數(shù)據(jù)框(data frame)分別是向量和矩陣的泛化——列表允許包含不同類型的元素,甚至可以把對(duì)象作為元素;數(shù)據(jù)框允許每列使用不同類型的元素。對(duì)于列表和數(shù)據(jù)框,其中的元素通常稱為分量(components)。

      對(duì)象的類型和長度

      R中所有的對(duì)象都有類型和長度屬性,可以通過函數(shù)typeof()和length()獲取/設(shè)置。舉例如下:

      View Code
      > x = c(1,2,3,4)
      > x
      [1] 1 2 3 4
      > typeof(x)
      [1] "double"
      > length(x)
      [1] 4
      > dim(x)=c(2,2)
      > x
           [,1] [,2]
      [1,]    1    3
      [2,]    2    4
      > typeof(x)
      [1] "double"
      > length(x)
      [1] 4
      
      > Lst <- list(name="Fred", wife="Mary", no.children=3,
      +                    child.ages=c(4,7,9))
      > 
      > Lst
      $name
      [1] "Fred"
      
      $wife
      [1] "Mary"
      
      $no.children
      [1] 3
      
      $child.ages
      [1] 4 7 9
      
      > typeof(Lst)
      [1] "list"
      > length(Lst)
      [1] 4

      typeof()函數(shù)可能返回如下的值(在R源代碼src/main/util.c的TypeTable中定義):

      # 數(shù)據(jù)對(duì)象
      logical        含邏輯值的向量
      integer        含整數(shù)值的向量
      double        含實(shí)數(shù)值的向量
      complex        含復(fù)數(shù)值的向量
      character    含字符值的向量
      raw            含字節(jié)值的向量

      # 其他對(duì)象
      list        列表
      NULL        空
      closure        函數(shù)
      special        不可針對(duì)參數(shù)求值的內(nèi)置函數(shù)
      builtin        可針對(duì)參數(shù)求值的內(nèi)置函數(shù)
      environment    環(huán)境

      # 通常在R內(nèi)部使用
      symbol        變量名
      pairlist    成對(duì)列表對(duì)象
      promise        用于實(shí)現(xiàn)悠閑賦值的對(duì)象
      language     R 語言構(gòu)建
      ...            特定變量長度參數(shù)
      any            可以匹配任何類型的特殊類型
      expression    表達(dá)式對(duì)象
      externalptr    外表指針對(duì)象
      weakref        弱引用對(duì)象
      char            字符
      bytecode        二進(jìn)制



      對(duì)象的類型不是一成不變的,可以隨時(shí)進(jìn)行轉(zhuǎn)換。接著上面的例子:

      > typeof(x)
      [1] "double"
      > y = as.logical(x)
      > typeof(y)
      [1] "logical"
      轉(zhuǎn)換的規(guī)則如下表:
      |----|                | to numeric                | to logical                    | to character
      |---+---
      from numeric        -                    |0 → FALSE 其它數(shù)字 → TRUE    | 1, 2, ... → "1", "2"
      from logical        FALSE → 0 TRUE → 1        |-                        | TRUE → "TRUE"   FALSE → "FALSE"    
      from character        "1", "2", ... → 1, 2, ... "A",... →NA | "FALSE", "F" → FALSE "TRUE", "T" → TRUE 其它 → NA | 

      對(duì)象的長度也可以隨時(shí)發(fā)生改變,常見的包括如下情況:

      > # 擴(kuò)大索引范圍
      > x = c(1,2,3)
      > x
      [1] 1 2 3
      > x[5] = 12
      > x
      [1]  1  2  3 NA 12
      > length(x)
      [1] 5
      > # 直接設(shè)置length屬性
      > length(x) = 2
      > x
      [1] 1 2
      > # 重新賦值(略)
          ?    ?    對(duì)象的class和attributes
      typeof()處理對(duì)象內(nèi)元素的類型,而class()處理對(duì)象本身的類,例如:
      > x = 1:6
      > x
      [1] 1 2 3 4 5 6
      > typeof(x)
      [1] "integer"
      > class(x)
      [1] "integer"
      > dim(x) = c(3,2)
      > x
           [,1] [,2]
      [1,]    1    4
      [2,]    2    5
      [3,]    3    6
      > typeof(x)
      [1] "integer"
      > class(x)
      [1] "matrix"

      通過class還可以更改對(duì)象的類,例如:

      > x = 1:6
      > class(x)
      [1] "integer"
      > class(x) = "matrix"
      錯(cuò)誤于class(x) = "matrix" : 
        除非維度的長度為二(目前是0),否則不能設(shè)為矩陣類別
      > class(x) = "logical"
      > x
      [1] TRUE TRUE TRUE TRUE TRUE TRUE

      除了typeof和length之外,其他class的對(duì)象可能還會(huì)有其他的屬性,可以通過函數(shù)attributes()和attr()進(jìn)行操作,例如:

      > x = 1:6
      > attributes(x)
      NULL
      > dim(x) = c(3,2)
      > attributes(x)
      $dim
      [1] 3 2
      
      > x
           [,1] [,2]
      [1,]    1    4
      [2,]    2    5
      [3,]    3    6
      > attr(x,"dim") = c(2,3)
      > x
           [,1] [,2] [,3]
      [1,]    1    3    5
      [2,]    2    4    6

      從例子可以看出,屬性以列表形式保存,其中所有元素都有名字。
      從例子還可以看出,R的數(shù)組中,元素的排列順序是第一下標(biāo)變化最快,最后下標(biāo)變化最慢。這在FORTRAN中叫做“ 按列次序”。


      一些常見的屬性如下:
      names,可以為向量或列表的每個(gè)元素增加標(biāo)簽。

      > x = 1:6
      > x
      [1] 1 2 3 4 5 6
      > attributes(x)
      NULL
      
      > attr(x,'names') = c('a','b','c')
      > x
         a    b    c <NA> <NA> <NA> 
         1    2    3    4    5    6 
      > attributes(x)
      $names
      [1] "a" "b" "c" NA  NA  NA 

      dim,標(biāo)記對(duì)象的維度。除向量外,基于數(shù)組的對(duì)象都會(huì)有一個(gè)維度屬性,是一個(gè)指定數(shù)組各維度長度的整數(shù)向量。與下標(biāo)類似,維度也可以命名。通過dimnames屬性可以實(shí)現(xiàn)這一目的:

      > x = array(1:6,2:3)
      > x
           [,1] [,2] [,3]
      [1,]    1    3    5
      [2,]    2    4    6
      > attributes(x)
      $dim
      [1] 2 3
      
      > names = list(c('x','y'),c('a','b','c'))
      > dimnames(x) = names
      > x
        a b c
      x 1 3 5
      y 2 4 6
      > attributes(x)
      $dim
      [1] 2 3
      
      $dimnames
      $dimnames[[1]]
      [1] "x" "y"
      
      $dimnames[[2]]
      [1] "a" "b" "c"

      訪問對(duì)象中的元素

      既然對(duì)象是元素的集合,很自然就會(huì)想到使用下標(biāo)來訪問對(duì)象中的元素:

      > x = array(6:1,2:3)
      > x
           [,1] [,2] [,3]
      [1,]    6    4    2
      [2,]    5    3    1
      > x[1]        #按照存儲(chǔ)的順序訪問單個(gè)元素
      [1] 6
      > x[2]        #按照存儲(chǔ)的順序訪問單個(gè)元素
      [1] 5
      > x[3]        #按照存儲(chǔ)的順序訪問單個(gè)元素
      [1] 4
      > x[1,2]        #通過多個(gè)下標(biāo)訪問單個(gè)元素
      [1] 4
      > x[1,]        #返回一行
      [1] 6 4 2
      > x[,1]        #返回一列
      [1] 6 5 

      如果對(duì)象有names屬性,還可以通過names進(jìn)行索引:

      > x = array(6:1,2:3)
      > 
      > names(x) = c('a','b','c')
      > x
           [,1] [,2] [,3]
      [1,]    6    4    2
      [2,]    5    3    1
      attr(,"names")
      [1] "a" "b" "c" NA  NA  NA 
      > x['b']        #等價(jià)于x[2]
      b 
      5 

      上面兩個(gè)例子都是返回對(duì)象中的單個(gè)元素。在R中,還可以返回對(duì)象的多個(gè)元素,此時(shí)使用的索引不是簡單的數(shù)值或字符串,而是一個(gè)向量。繼續(xù)上面的例子:

      > x[1:3]
      a b c 
      6 5 4 
      > x[c(3,4)]
         c <NA> 
         4    3 
      > x[c(1,2),c(1,2)]
           [,1] [,2]
      [1,]    6    4
      [2,]    5    3
      > x[c('a','b')]
      a b 
      6 5 

      用序列填充對(duì)象

      前面的例子中,你可能會(huì)注意到一些與python類似的語法,比如序列:
      a:b
      R中提供了一些創(chuàng)建序列的方法,可以很方便的填充對(duì)象。包括規(guī)則序列和隨機(jī)序列。

      規(guī)則序列用于產(chǎn)生有規(guī)則的序列:
      使用a:b的形式是最簡單的用法;
      如果需要更多的控制,可以使用seq(from,to,by,length,along)函數(shù);
      使用rep()函數(shù)可以產(chǎn)生重復(fù)的元素。
      例如:

      > 1:3
      [1] 1 2 3
      > 2*1:3
      [1] 2 4 6
      > 3:1
      [1] 3 2 1
      
      > seq(1,2,0.2)
      [1] 1.0 1.2 1.4 1.6 1.8 2.0
      > seq(1,2,0.3)
      [1] 1.0 1.3 1.6 1.9
      > seq(to=2,by=.2)
      [1] 1.0 1.2 1.4 1.6 1.8 2.0
      > seq(to=2,by=.2,length=3)
      [1] 1.6 1.8 2.0
      
      > rep(1:3,2)
      [1] 1 2 3 1 2 3
      > rep(1:3,each=2)
      [1] 1 1 2 2 3 3

      隨機(jī)序列用于產(chǎn)生符合一定分布規(guī)則的數(shù)據(jù)。有大量的函數(shù)用于產(chǎn)生隨機(jī)序列,這里只列出一些函數(shù)的名稱:

      數(shù)據(jù)編輯器

      我們當(dāng)然可以使用下標(biāo)操作對(duì)象,編輯對(duì)象中的數(shù)據(jù)元素。但是R提供的一個(gè)可視化的工具能夠帶來更多的便利,這就是數(shù)據(jù)編輯器。
      使用data.entry()函數(shù)可以打開數(shù)據(jù)編輯器:

      > x = array(6:1,2:3)
      > data.entry(x)

      posted @ 2013-05-09 11:31  心內(nèi)求法  閱讀(35224)  評(píng)論(3)    收藏  舉報(bào)
      主站蜘蛛池模板: 国产一区二区三区在线观看免费| 一区二区三区精品偷拍| 新源县| 国产精品一区二区日韩精品 | 亚洲理论在线A中文字幕| 日韩精品国产二区三区| 国产精品剧情亚洲二区| 中文字幕乱码无码人妻系列蜜桃| 中国少妇人妻xxxxx| 69精品无人区国产一区| 欧美亚洲综合成人A∨在线| 成人啪精品视频网站午夜| 国产精品色内内在线播放| 免费无码一区无码东京热| 日韩精品国产另类专区| 91久久偷偷做嫩草影院免费看| 999国产精品999久久久久久 | 又粗又大又黄又硬又爽免费看| 无码中文字幕人妻在线一区二区三区| 久久精品国产九一九九九| 亚洲精品国产一二三区| 久久99国产精品久久99| 人妻少妇一区二区三区| 亚洲中文字幕亚洲中文精| 69精品丰满人妻无码视频a片| 国产成人午夜福利院| 人妻熟女一区无中文字幕| 4hu四虎永久在线观看| 人妻一区二区三区三区| 成人动漫综合网| 中文字幕在线永久免费视频| 开心一区二区三区激情| 激情伊人五月天久久综合| 国产熟睡乱子伦视频在线播放 | 国语精品国内自产视频| 日本一区二区三区四区黄色| 日韩深夜福利视频在线观看| 久久国产乱子精品免费女| 色综合久久久久综合体桃花网| 亚洲av成人区国产精品| AV最新高清无码专区|