最近遇到一个问题,需要对不同分类区域的相关研究指标进行特定的分析,因为涉及分类较多,使用循环赋值语句进行分类,直接上代码:
举例:假设原始数据为由A区-J区的10个分类区域(如图);
第一种方式:循环生成多个list下存放的数据集
library(dplyr)
library(stringr)
###使用filter函数将数据转存到list数据集中###
mc<-mydata$ad%>%table()%>%names()
kk<-list()
for(i in 1:length(mc)){
kk[[i]]<-filter(mydata,ad==mc[i])
}
names(kk)<-mc
###使用str_detect函数可以实现同样的目的###
kk<-list()
for(i in 1:length(mc)){
kk[[i]]<-filter(mydata,str_detect(ad,mc[i]))
}
names(kk)<-mc
第二种方式: 循环生成多个数据框结构的数据集(list固然方便,data.frame也可以试试)
###使用assign函数将数据集转存为多个数据框格式###
for(i in 1:length(mc)){
assign(paste0("area",i),filter(mydata,ad==mc[i]))
}
###使用parse函数和eval函数实现同样的目的###
for(i in 1:length(mc)){
eval(parse(text=paste0("area",i,"<-filter(mydata,ad==mc[i])")))
}
注:assign(变量名,value) 将向量/数值/数据框等赋值新变量固然好用;但eval函数用来执行表达式,parse函数用来生成表达式语句,二者结合使用更是YYDS哦~