2019-07-28[R语言编程艺术-2]

2019-07-28  本文已影响0人  森尼啊

chapter3 向量

y <- matrix(c(1,2,3,4),ncol = 2)#按列存储,可用byRow= TRUE,按行排列
#判断条件返回的是布尔类型
#which()函数返回的是元素的位置

对矩阵行列调用函数

apply(), tapply(),lapply()

apply()

apply(m,dimcode,f,fargs)

 z<- matrix(c(1,2,3,4,5,6),ncol = 2)
> z
     [,1] [,2]
[1,]    1    4
[2,]    2    5
[3,]    3    6
> f<-function(x) x/c(2,8)
> y<-apply(z,1,f)
> y
     [,1]  [,2] [,3]
[1,]  0.5 1.000 1.50
[2,]  0.5 0.625 0.75
> y<-t(apply(z,1,f))
> y
     [,1]  [,2]
[1,]  0.5 0.500
[2,]  1.0 0.625
[3,]  1.5 0.750

增加或删除矩阵行列

类似向量,可通过重赋值的方法

注意:创建向量/矩阵很耗时间,若在循环中重复创建矩阵,浪费很多时间,可以先定义好一个大的空矩阵,在循环中逐行/逐列赋值,或者删减

避免意外降维

此时r是一个向量,而非1x2矩阵,使用drop = FALSE,避免意外降维

> y<-(c(1,2,3,4,5,6),ncol = 2)
> y
     [,1] [,2]
[1,]    1    4
[2,]    2    5
[3,]    3    6
> r<-y[2,]
> r
[1] 2 5
> r<-y[2,,drop= FALSE]
> r
     [,1] [,2]
[1,]    2    5

命名

chapter4列表

j<-list(name = "Joe",salary=5000,union= T)
#列表也是向量,也可以用vector()创建
> z<-vector(mode = "list")
> z[["abc']] <-3
> z
$abc
[1] 3

列表的常规操作

lst$c
lst[["c"]]
lst[[i]],i 是c在list中的数字编号

列表删减

z$c <- "sailing"
#使用索引
z[[4]] <-28
z[5;7]<-c(1,2,3)
#删除
z$b <-NULL
#拼接
c(lst,list(5))

访问列表元素

length(j)#返回组件个数
names(j)#返回组件各名称
unlist()#获取列表的值,通常是字符串向量

优先级排序,NULL<raw<逻辑类型<整型<实数<复数<列表<表达式

chapter5 数据框

数据框是每个组件长度都相等的列表

d[[1]]
d$kids
d[,1]
#提取子数据框
d[2:5,2,drop = FALSE]#创建数据框,drop=FALSE,得到一个数据框
na.rm = TRUE#忽略缺失值
subset()#无需设定na.rm=TRUE
complete.cases()#从数据框中去掉含有一个意思NA的观测
rbind(d,list("Laura",19))#添加新行使用数据框or列表的形式

-apply()
-merge()#合并数据框

merge(d1,d3,by.x = "kids",by.y="pals")#在两个数据框中,名称不同意义一样,合并在一起
上一篇 下一篇

猜你喜欢

热点阅读