R语言笔记第二课,对象、因子、数组

来源:互联网 发布:mysql log 文件位置 编辑:程序博客网 时间:2024/05/22 15:39
# 第三章 对象和他们的模式和属性# R 操作的所有都是对象mode(c(12,3))# "numeric"length(c(1,2))# "2"z <- 0:11z# 学会使用一系列as.something()的函数digits <- as.character(z) # 全部转化为字符串digitsd <- as.integer(digits)de <- numeric() # 创建一个数值模式的空间结构ee[3] <- 12 # 通过下标进行赋值,前面用NA填充,自动填充长度的方法# e  NA NA 12a = scan() # 接受多个输入值# 删减一个对象的大小只需要用赋值操作a = 1:10a <- a[2 *1 : 3] # 得到索引2,4,6下标的对应值alength(a) <- 2 # 得到a的前2个值a# 读取和设置属性# attributes(a) # 给出对象的定义的非内在属性# attr(boject, name) #选择特定的属性# attr(a,"dim") <- c(10,10), 没有实现成功# 对象的类 用class()函数查看对象的类# 涉及泛型函数和类class(logical)class(matrix)# unclass()临时去掉一个对象的类作用winter = c(12,'2')unclass(winter)# --------------- 有序因子和无序因子--------# 因子: 是对一个等长的其他向量元素进行分组的向量对象。有序和无序两种state <- c("tas","qld","sa","sa","sa","vic","nt","act","qld","nsw","wa","nsw","nsw",       "vic","vic","vic","nsw","qld","qld","vic","nt", "wa", "wa","qld", "sa", "tas",      "nsw", "nsw", "wa","act")statef <- factor(state)stateflevels(statef) #就是所有的相同的名字合到一起,作为一个类别,有点字典的味道incomes <- c(60, 49, 40, 61, 64, 60, 59, 54, 62, 69, 70, 42, 56,         61, 61, 61, 58, 51, 48, 65, 49, 49, 41, 48, 52, 46,         59, 46, 58, 43)incmeans <- tapply(incomes, statef, mean) # 这儿就体现类了什么因子,以及因子的用处,                      # 自动合并相同位置的值,做处理,mean,sum ect                      # 有点类似于pandas中的apply()函数incmeansinsums <- tapply(incomes, statef, sum)insums# 计算上述数据的标注差stderr <- function(x) sqrt(var(x)/length(x))sd() #标准差incstderr <- tapply(incomes, statef, sd)incstderrincstderr1 <- tapply(incomes, statef, stderr)incstderr1# 计算平均收入的95%信度区间# 有序因子ordered(),字符串的大小有序排列ordered(state) # ----------- 5 数组和矩阵 ------------# 向量和数组的差别,向量只有在定义类dim属性后才能作为数组在R中使用x <- c(1,2,3,4,5,6,7,8,9,10,11,12)dim(x) <- c(3,4) # 此时x是二维的数组或者说是矩阵matrix(x,4,3)array(x)x[2,]x <- array(1:20, dim=c(4,5))xi <- array(c(1:3,3:1),dim=c(3,2)) # 3X2的索引矩阵x[i] <- 0x# array(data,dim())h = 1:24z <- array(h,dim=c(2,3,4)) #创建一个2X3X4的数组,一般情况下用0进行填充              # 如果h 的长度小于24,它的元素将会被循环使用直到长度为24D <- z+z #元素级别上的运算D# 数组的外积运算, 运算符 a %o% b, a的每一个元素乘以b的所有元素a <- array(1:8,dim=c(2,4))b <- array(1:8,dim=c(2,4))c <- array(1:4)d <- array(1:4)a %o% bc %o% dab <- outer(a,b,"*") #另一中外积的表达形式,乘法符号可以被任意双变量函数替代f <- function(x,y) cos(y) / (1+x^2)z <- outer(c,d,f)ze <- outer(0:9, 0:9)fr <- table(outer(e,e,"-"))plot(as.numeric(names(fr)),fr,type="h",xlab="Determinat",ylab="Frequency")# 广义数组的装置aperm(a,perm) #perm可以使{1....k}的一个排列,k是a的下标数目# a: 2X4b <- aperm(a,c(2,1)) # 装置运算,按轴进行转制t(a) # 函数t()也是一个转制函数
0 0
原创粉丝点击