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

# 第三章 对象和他们的模式和属性

# 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()也是一个转制函数







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值