R学习笔记之三:对象

一、赋值

1、常用赋值:<-、->、assign();

2、全局变量赋值:<<-、->>。

p.s. 《Google's R Style Guide》不建议使用=来赋值

 

二、数据类型:typeof,class,mode

NULL、character、numeric、double、integer、logical、complex、list、factor、raw、expression、name、symbol、function;

NA(not available):is.na();

NaN(not a number):is.nan();

Inf:is.infinite(),is.finite();

NULL:is.null()

1、typeof:

2、class:

3、mode:

4、attributes:

x <- factor(c("12","as","as","12"))
mode(x); class(x) # "numeric" "factor"

x <- ordered(c('A', 'B', 'A', 'C', 'B'), levels = c('C', 'B', 'A'))
mode(x); class(x) # "numeric" "ordered"

x <- matrix(c("12","as","as","12"),2)
mode(x); class(x) # "charactor" "matrix"

p.s.

class可以检测出因子类型(factor)和有序因子类型(ordered)

 “everything is an object”

R中所有数据都是采用向量的形式存储在变量中

 

三、变量类型:length,dim

http://developer.51cto.com/art/201305/393125.htm

列举当前内存中的所有对象:ls()、objects() 

1、基本数据对象之向量(Vector):一系列类型相同的有序元素构成,一定是一维的吗(dim())?

x <- vector()  # 创建一个空向量
x <- vector(mode="character",length=3)  # 等价于x <- character(3)和character(length=3)
x <- vector(mode="integer",length=3) # 等价于x <- integer(3)和integer(length=3)
x <- vector(mode="logical",length=3) # 等价于x <- logical(3)和logical(length=3)
x <- vector(mode="complex",length=3) # 等价于x <- complex(3)和complex(length=3)
x <- vector(mode="list",length=3) #
#同上理,对于double,numeric,list,

数值向量(numeric、integer、double、complex、):包含实数、复数、NA、NaN;常用c()、:、seq()、rep()

逻辑向量(logical):包含TRUE、FALSE、NA、NaN,

字符向量(character):letters[1:26]

列表向量(list):

 

2、衍生数据对象之因子(factor)、有序因子(ordered)、矩阵(matrix)、数组(array)、数据框(data frame)、列表(list)、时间序列(time-series)、表(table)

因子(factor,水平(levels)):包含分类数据,其中levels参数定义了所有的可取值,维数为1

x <- factor(c("m","m","h"),levels=c("m","n","h"))  # table()用途甚广

有序因子(ordered,水平(levels)):

x <- ordered(c('A', 'B', 'A', 'C', 'B'), levels = c('C', 'B', 'A'))

矩阵(特殊的数组):matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL),只能定义维数为2的数组

x <- matrix(1:20,4,5,byrow=T)  # byrow默认为FALSE,即默认为按列排列

数组:array(data = NA, dim = length(data), dimnames = NULL),可以定义维数为3维及以上的数组

x <- array(1:36, c(2, 3, 3, 2))  # 一个四维数组
x <- array(1:20,c(4,5))  # 等同于x <- matrix(1:20,4,5),所以说matrix是特殊的array,即两维的array

数据框(特殊的列表,类似于矩阵,每列数据的length必须相等):每列可为不同类型的数据,一般导入外部文件时使用

x <- data.frame(my.id=c(101,102),my.name=c("mygod","myself"))

列表:以其他对象为成分的有序集合,其他对象包括......

x <- list(my.id=101,my.name="mygod")  # 单方括号索引得到属性名,双方括号得到属性值

时间序列:http://127.0.0.1:25166/library/stats/html/ts.html

 

表(table):http://127.0.0.1:25166/library/base/html/table.html 

class(table(c(1,2,3,2,3,4))) == "table"

 

四、Class转换:

 1、判断Class 

is.character()
is.integer()
is.numeric()
is.vector()
is.factor()
is.matrix()
is.array()
is.data.frame()
is.list()

x <- factor(c("12","as","as","12"))
mode(x); class(x)
is.numeric(x); is.factor(x)  # FALSE TRUE

x <- ordered(c('A', 'B', 'A', 'C', 'B'), levels = c('C', 'B', 'A'))
mode(x); class(x)
is.numeric(x); is.ordered(x) # FALSE TRUE

x <- matrix(c("12","as","as","12"),2)
mode(x); class(x)
is.character(x); is.matrix(x)  #TRUE TRUE

 

 2、转换Class

as.character()
as.integer()
as.numeric()
as.vector()
as.factor()
as.matrix()
as.array()
as.data.frame()
as.last()

 

五:总结

  列间数据类型 每列数据长度
matrix 必须相同 必须相同
data.frame 可以不同 必须相同
list 可以不同 可以不同

转载于:https://www.cnblogs.com/myquant/p/3583779.html

你可能感兴趣的:(R学习笔记之三:对象)