R语言:基础数据类型和数据结构

随着R语言开发的深入,不得不对R中基础的数据类型进行深入了解。

0. 数据类型,主要有以下几个类型
    logical, integer, double, complex, character, or raw.
    可以根据as.nameOfType()和is.nameOfType来进行转化和真值判断。

1. 数据结构

1.1 向量(Vectors)
   class(vector)的结果为相对应的数据类型
1.1.1 使用c()构造向量
  
 p <- c(2,3,5,7)

1.1.2 当向量索引增加时,向量自动增加。
   
    for(i in 1:length(p)){
          p[i] <- i
    }
    
 
1.1.3 使用seq()构造向量
   
se<-seq(1,10,1)


1.2 数组(Arrays)    
     class(array)的结果为“array”
1.2.1 使用array(vector, num=length(vector), dimname)构造数组
    
arr<-array(vec,5,"test")

1.3 列表(lists)
      是general form的一种向量,但是可以包含不同的数据类型。这里list比较像C中的struct数据结构。
      class(list)的结果为“list”

1.3.1 使用list()构造列表
      
a <- list(name="Joe", 4, foo=c(3,8,9))

1.3.2 使用a[[num]]来提取列表中某一栏数据
      
a[[1]]等价于a$name

       如果超出list的长度,则会显示错误。 如:a[[4]]

1.4 矩阵(matrices)
      在R语言中,没有固定的矩阵数据类型,他是通过对多个向量的组合形成的。
     class(matrix)的结果为“matrix”
1.4.1 使用array()构造矩阵
      通过array()构造的矩阵可以增加矩阵的维度。
    
 m1 <- array( c(1,2,3,4,5,6), dim=c(2,3) )
 m2 <-  array(data=c(firstMatrix,secondMatrix),dim=c(rownumber,columnnumber,2))

1.4.2 使用matrix()构造矩阵
   y <- matrix(c(1:9), nrow = 3, ncol = 3)

1.4.3 使用cbind()和rbind构造矩阵
PE <- c(0,0,0,0,1,0,0)
EE <- c(0,0,0,0,1,0,0)
SN <- c(0,0,0,0,1,0,0)
FC <- c(0,0,0,0,0,1,1)
BI <- c(0,0,0,0,0,1,1)
UF <- c(0,0,0,0,0,0,0)
TU <- c(0,0,0,0,0,0,0)
utaut.inner <- cbind(PE,EE,SN,FC,BI,UF,TU)


1.5 数据框(data.frame)
从其他语言中理解来说,就是数据库中的表(table),Excel中的表(sheet)。表中的列就是字段,变量;表中的行就是记录,样本。
class(utaut)的结果为“data.frame”
1.5.1 使用read.table()构造数据框
在之前的博客中已经介绍过一些方法,如read.csv()等
http://penergy.iteye.com/blog/2042719

1.5.2 使用data.frame()构造数据框
x <- 1:4; n <- 10; M <- c(10, 35); y <- 2:4
frame1<-data.frame(x, n)
xtest<-frame1$x //返回向量(vectors)数据结构


1.6 因子(factor)
为处理分类数据提供的一种有效方法
//假定我们有一份来自澳大利亚所有州和行政区的信息样本 以及他们各自所在地的州名。
state <- c("tas", "sa", "qld", "nsw", "nsw", "nt") 
//创建因子factor:
statef <- factor(state)
statef
[1] tas sa  qld nsw nsw nt 
Levels: nsw nt qld sa tas


2. 总结
这一篇主要是讲述基本数据结构和数据类型。在下一期会讲解如何使用这些数据结构,比如矩阵运算,向量运算等。

参考:
http://blog.fens.me/rhadoop-r-basic/

猜你喜欢

转载自penergy.iteye.com/blog/2056442
今日推荐