我们在日常的数据分析过程中,经常要进行循环的操作。但是在R语言中,for循环的效率低下,如果是数据量比较大的情况下,可能会花费比较多的时间。因此,我们可以使用向量化操作来代替循环。向量化可以理解为高效的循环。
我们主要讲解基础包中的:
此函数经常被用于对矩阵的行或列进行指定目的的循环
• 可以被用于多个数组的循环
• 该函数作用于一行进行循环
• X 是一个数组
• MARGIN 参数是一个数字向量,在适用与矩阵时,1表示行,2表示列,也可以是列名
• FUN 是适用循环的函数
• ... 表示其他参数
使用之前我们学过的东西进行改进的话可以酱紫:
但是依然还是有缺陷,就是只能对一个分组变量,不能同时对多个变量进行
接下来我们讲下怎么弥补这个缺陷:
split 用于使某向量或对象分为指定数目的列表,指
定数目的组由因子列表确定
• X是一个向量或数据框
• F是一个因子或因子列表
• Drop表示空因子水平是否舍弃
别的不清楚,R有两种做法。
一种用matrix()把1:10扩展成相应的矩阵,然后相加
x <- 1:10v <- rep(x, 10) # 把x重复个10次,v是100维向量,10个1到10的循环
m1 <- matrix(v, 10, 10) # 把v铺在一个10*10的矩阵里,按列铺
m2 <- matrix(v, 10, 10, byrow = T) # 把v铺在一个10*10的矩阵里,按行铺
m1 + m2
第二种就是用一个1向量和1:10左右矩阵相乘达到和上面m1,m2相同的效果
x <- 1:10one <- rep(1,10)
m1 <- one %*% t(1:10) # t是把列向量转置成行向量
m2 <- 1:10 %*% t(one)
m1 + m2