一、赋值
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 | 可以不同 | 可以不同 |