-
split #根据因子或者因子列表将向量或其他对象分组 #通常与lapply一起使用 #参数格式:split(向量/列表/数据框,因子/因子列表) x <- c(rnorm(5), runif(5),rnorm(5,1)) f <- gl(3,5) split(x,f) lapply(split(x,f), mean) lapply(split(x,f), sum) head(airquality) split(airquality,airquality$Month)#按照month分组查看 s <- split(airquality,airquality$Month) table(airquality$Month)#查看每个Month下包含的记录数 lapply(s, function(x) colMeans(x[,c("Ozone","Wind","Temp")]))# 求平均值 sapply(s, function(x) colMeans(x[,c("Ozone","Wind","Temp")]))#简化显示结果 sapply(s, function(x) colMeans(x[,c("Ozone","Wind","Temp")],na.rm = T))#处理缺失值查看全部
-
#tapply #对向量的子集进行操作 tapply(向量,因子/因子列表,函数/函数名) x <- c(rnorm(5), runif(5),rnorm(5,1)) f <- gl(3,5) tapply(x,f,mean) tapply(x,f,mean, simplify = FALSE)查看全部
-
#lapply的多元版本 #mapply(参数) #mapply(函数/函数名,数据, 函数相关的参数) a<-list(rep(1,4), rep(2,3), rep(3,2),rep(4,1)) b<-mapply(rep,1:4,4:1)#等价于上面的list s <- function(n, mean ,std){ rnorm(n, mean, std) } s(4,0,1) #调用函数s,生成1到5四个元素,其中均值是5到1,标准差是2 mapply(s, 1:5,5:1,2) list(s(1,5,2),s(2,4,2),s(3,3,2),s(4,2,2),s(5,1,2))#这个list的效果跟mapply函数一样查看全部
-
apply #沿着数组的某一维度处理数据 #将函数用于矩阵的行或者列 #一句话就可以完成for/while函数 #apply(数组,维度,函数/函数名) x <- matrix(1:16,4,4) apply(x, 2, mean)#求列的平均 apply(x, 2, sum)#求列和 apply(x, 1, mean)#求行的平均 apply(x, 1, sum)#求行和 x <- matrix(rnorm(100),10,10) apply(x, 1, quantile, probs = c(0.25, 0.75)) x <- array(rnorm(2*3*4),c(2,3,4)) apply(x,c(1,2), mean)查看全部
-
lapply 可以循环处理列表中每一个元素 lapply(参数):lapply(列表,函数/函数名,其他参数) 结果总是返回一个列表 str(lapply) eg: x<-list(a=1:10,b=c(11,21,31,41,51)) lapply(x,mean)#求平均 x<-1:4 lapply(x,runif)#runif,从一个均匀分布的总体里,抽取若干个数 lapply(x,runif,min=0,max=1000) x<-list(a=matrix=(1:6,2,3),b=matrix(4:7,2,2)) lapply(x,function(m) m[1,]) sapply//对lapply进行化简 结果列表长度均为1,返回向量 结果列表元素相同且大于1,返回矩阵查看全部
-
向量化操作 -可以作用于向量,矩阵等结构,使得代码简洁,易于阅读,效率高 x<-1:5 y<-6:10 x+y x*y x/y //创建两个矩阵 x<-matrix(1:4,nrow=2,ncol=2) y<-matrix(rep(2,4)//把2重复4次,nrow=2,ncol=2) x%*%y //矩阵乘法查看全部
-
处理缺失值 x <- c(1, NA, 2, NA, 3) x[!is.na(x)]#取得非缺失值 x <- c(1, NA, 2, NA, 3) y <- c("a","b",NA,"c",NA) z <- complete.cases(x,y) x[z] y[z]#取得两个向量中都不为NA的列 library(datasets)#导入R自带的数据集包 head(airquality)#head()方法查看数据集前几行 g <- complete.cases(airquality) airquality[g,][1:10,]#显示前10条不含NA属性的记录查看全部
-
列表的子集 x <- list(id=1:4, height=170, gender="male") x["id"]#与x[1]等效,返回的是名字和内容 #只返回内容 x[["id"]] x$id x[c(1,3)]#返回指定列 #可以用变量代替引用 y <- "id" x[[y]] #不可以用变量代替引用($) x$id x$y #获取嵌套列表中的元素 x <- list(a=list(1,2,3,4),b=c("Monday","Tuesdat")) x[[1]][[2]]#方法一:连续两个双括号 x[[c(1,3)]]#方法二:一个双括号,里面用c()函数 #不完全匹配 #如果一个不完全匹配有多个成功匹配,返回结果为NULL l <- list(asdfghj=1:10) l$asdfghj l$a l[["a",exact=FALSE]]#双括号关闭精确匹配查看全部
-
数据框的子集 x <- data.frame(v1=1:5, v2=6:10, v3=11:15)#数据框三列元素 x$v3[c(2,4)] <- NA#第三列第2、4个元素赋为缺失值 x[,"v2"]#与x[,2]等效 x[(x$v1<4 & x$v2>=8),]#条件获取 #以下两种方式在以后的学习中会辨析区别 x[x$v1>2,] x[which(x$v1>2),] x$v1>2#返回满足条件的逻辑向量 which(x$v1>2)#返回上述逻辑为真的数值向量 #条件构建子集的函数,此函数适用于矩阵,数据框等其他数据结构 subset(x,x$v1>2)查看全部
-
数据操作小结查看全部
-
排序函数查看全部
-
tapply 对向量的子集进行操作查看全部
-
mapply 的简化作用 自己写函数查看全部
-
构建子集查看全部
-
得到元素 仅得到元素的内容查看全部
举报
0/150
提交
取消