一、赋值
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
列举当前内存中的所有对象: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") # 单方括号索引得到属性名,双方括号得到属性值
时间序列:
表(table):
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 | 可以不同 | 可以不同 |