成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

大數(shù)據(jù)
盡管前面提到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的向量。比如:

  1. > b=5 
  2. > length(b) [1] 1 
  3. > typeof(b) [1] "double" 
  4. > 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è)置。舉例如下:

  1. > x = c(1,2,3,4) > x [1] 1 2 3 4 
  2. > typeof(x) [1] "double" 
  3. > length(x) [1] 4 
  4. > dim(x)=c(2,2) > x      [,1] [,2] [1,]    1    3 [2,]    2    4 
  5. > typeof(x) [1] "double" 
  6. > length(x) [1] 4 
  7.  
  8. > Lst <- list(name="Fred"wife="Mary"no.children=3, +                    cchild.ages=c(4,7,9)) >  
  9. > Lst $name [1] "Fred"  $wife [1] "Mary"  $no.children [1] 3  $child.ages [1] 4 7 9 
  10.  
  11. > typeof(Lst) [1] "list" 
  12. > 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)換。接著上面的例子:

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

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

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

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

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

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

  1. > x = 1:6 
  2. > attributes(x) NULL > dim(x) = c(3,2) > attributes(x) $dim [1] 3 2 
  3.  
  4. > x      [,1] [,2] [1,]    1    4 [2,]    2    5 [3,]    3    6 
  5. > 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)簽。

  1. > x = 1:6 
  2. > x [1] 1 2 3 4 5 6 
  3. > attributes(x) NULL  > attr(x,'names') = c('a','b','c') > x    a    b    c <NA> <NA> <NA>  
  4.    1    2    3    4    5    6  
  5. > 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)這一目的:

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

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

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

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

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

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

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

  1. > x[1:3] a b c  6 5 4  
  2. > x[c(3,4)]    c <NA>  
  3.    4    3  
  4. > x[c(1,2),c(1,2)]      [,1] [,2] [1,]    6    4 [2,]    5    3 
  5. > 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. > 1:3 [1] 1 2 3 
  2. > 2*1:3 [1] 2 4 6 
  3. > 3:1 [1] 3 2 1 
  4.  
  5. > seq(1,2,0.2) [1] 1.0 1.2 1.4 1.6 1.8 2.0 
  6. > seq(1,2,0.3) [1] 1.0 1.3 1.6 1.9 
  7. > seq(to=2,by=.2) [1] 1.0 1.2 1.4 1.6 1.8 2.0 
  8. > seq(to=2,by=.2,length=3) [1] 1.6 1.8 2.0 
  9.  
  10. > rep(1:3,2) [1] 1 2 3 1 2 3 
  11. > 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)

原文鏈接:http://www.cnblogs.com/holbrook/archive/2013/05/09/3068613.html

【編輯推薦】

1.R語言學(xué)習(xí)筆記(1):R是什么

責(zé)任編輯:彭凡 來源: 博客園
相關(guān)推薦

2013-05-14 09:42:36

R語言

2013-05-10 14:37:37

2015-08-18 09:42:25

2023-10-17 07:57:56

Python數(shù)據(jù)類型

2024-01-12 09:00:22

Swift常量數(shù)據(jù)類型

2016-11-11 14:12:19

R語言

2022-05-23 08:19:19

Redis數(shù)據(jù)結(jié)構(gòu)內(nèi)存

2023-09-15 10:33:41

算法數(shù)據(jù)結(jié)構(gòu)

2022-03-01 23:31:29

Python編程語言變量

2009-06-24 08:04:18

Hibernate基礎(chǔ)核心接口數(shù)據(jù)類型

2021-04-05 08:22:54

Python進(jìn)制數(shù)據(jù)類型

2010-08-11 09:14:33

DB2數(shù)據(jù)類型

2021-06-08 06:01:00

C++數(shù)據(jù)結(jié)構(gòu)向量和數(shù)組

2009-08-14 15:54:12

C#編程語言

2010-08-10 17:17:59

2011-08-04 09:56:30

Objective-C 變量 數(shù)據(jù)類型

2009-08-27 15:47:00

C#數(shù)據(jù)類型string

2019-09-02 09:48:39

Redis數(shù)據(jù)結(jié)構(gòu)對(duì)象

2021-06-08 10:41:00

Go語言算法

2011-07-07 10:18:58

Cocoa 實(shí)例變量 數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 久久国产精99精产国高潮 | 久久久久久www | 91精品国产综合久久久久蜜臀 | 黄色一级大片在线免费看产 | 91麻豆精品国产91久久久久久 | chinese中国真实乱对白 | 欧美二区乱c黑人 | 精品一区二区三区四区外站 | 国产婷婷在线视频 | 激情五月综合网 | 日韩精品在线一区 | 亚洲成人自拍 | 国产99久久精品一区二区永久免费 | 久久免费精品 | 最新黄色毛片 | 一区二区免费在线观看 | 999精品视频 | 久久久久国产一区二区三区 | 日韩欧美久久 | 中文二区 | 伊人色综合久久久天天蜜桃 | 亚洲欧洲中文日韩 | 久久久久免费观看 | 国产视频福利一区 | 91九色porny首页最多播放 | 九九在线 | 国产精品自产拍在线观看蜜 | 日本精品久久久久久久 | 国产片侵犯亲女视频播放 | 国产精品久久久久一区二区 | 国产精品日日夜夜 | 久久一区二区av | 欧美日本亚洲 | 欧美日韩国产在线 | 久久国内精品 | 一区二区三区亚洲精品国 | 国产高清视频在线播放 | 精品一区二区久久久久久久网站 | 欧美一区在线视频 | 美国黄色毛片 | 成人不卡 |