# 第三章 对象和他们的模式和属性
# R 操作的所有都是对象
mode(c(12,3))
# "numeric"
length(c(1,2))
# "2"
z <- 0:11
z
# 学会使用一系列as.something()的函数
digits <- as.character(z) # 全部转化为字符串
digits
d <- as.integer(digits)
d
e <- numeric() # 创建一个数值模式的空间结构e
e[3] <- 12 # 通过下标进行赋值,前面用NA填充,自动填充长度的方法
# e NA NA 12
a = scan() # 接受多个输入值
# 删减一个对象的大小只需要用赋值操作
a = 1:10
a <- a[2 *1 : 3] # 得到索引2,4,6下标的对应值
a
length(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)
statef
levels(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()函数
incmeans
insums <- tapply(incomes, statef, sum)
insums
# 计算上述数据的标注差
stderr <- function(x) sqrt(var(x)/length(x))
sd() #标准差
incstderr <- tapply(incomes, statef, sd)
incstderr
incstderr1 <- 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))
x
i <- array(c(1:3,3:1),dim=c(3,2)) # 3X2的索引矩阵
x[i] <- 0
x
# array(data,dim())
h = 1:24
z <- array(h,dim=c(2,3,4)) #创建一个2X3X4的数组,一般情况下用0进行填充
# 如果h 的长度小于24,它的元素将会被循环使用直到长度为24
D <- 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% b
c %o% d
ab <- outer(a,b,"*") #另一中外积的表达形式,乘法符号可以被任意双变量函数替代
f <- function(x,y) cos(y) / (1+x^2)
z <- outer(c,d,f)
z
e <- 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: 2X4
b <- aperm(a,c(2,1)) # 装置运算,按轴进行转制
t(a) # 函数t()也是一个转制函数
R语言笔记第二课,对象、因子、数组
最新推荐文章于 2023-01-19 21:50:09 发布