R语言︱list用法、批量读取、写出数据时的用法 |
您所在的位置:网站首页 › r语言遍历列表 › R语言︱list用法、批量读取、写出数据时的用法 |
列表是一种特别的对象集合,它的元素也由序号(下标)区分,但是各元素的类型可 以是任意对象,不同元素不必是同一类型。元素本身允许是其它复杂数据类型,比如,列表 的一个元素也允许是列表。例如: > rec rec $name [1] "李明" $age [1] 30 $scores [1] 85 76 90 列表元素总可以用“列表名[[下标]]”的格式引用。例如: > rec[[2]] [1] 30 > rec[[3]][2] [1] 76修改列表列表的元素可以修改,只要把元素引用赋值即可。如: > rec$age rec$age ##unlist是啥?? > l.ex #list数据[]与[[]]是一样的 > l.ex[2] [[1]] [[1]][[1]] [1] "Z" [[1]][[2]] [1] "A" > l.ex[[2]] [[1]] [1] "Z" [[2]] [1] "A" > > #unlist把l.ex[1]的元素拆开了,分为unlist[1]+unlist[2] > unlist(l.ex, recursive = FALSE)[3] [[1]] [1] "Z" > unlist(l.ex, recursive = FALSE)[[3]] [1] "Z" ———————————————————————————————————————————————————————————————— list在批量读取、写出xlsx数据时的用法方法弊端:弊端就是循环语句的弊端,导入的原始数据每个sheet都需要相同的数据结构。 list在批量读取数据时候的用法,一开始笔者困惑在: 1、如何循环读取xlsx中的sheet数据,然后批量放入list之中?——先定义list 2、如何定义写出时候的文件名字——paste函数 批量读取的基本流程就是:写入(list[[i]])、操作、写出 #1、读取xlsx中所有的sheet表格 #如果像vector一样定义List??——list()函数来主动定义,用data.list[[i]]来赋值 data.list变成向量data.frame->变成序号+单词 as.chacter->单个文本 #list中的字符串型数据如何导出? #list中非一般的字符串形式 [[1]] n v en n "职位" "描述" "Android" "平台" [[2]] n v n "岗位" "描述" "前端" #1、unlist与list区别 Job_Pwordseg.ct[1][1] #不论如何都不能得到list中的单个单词 unlist(Job_Pwordseg.ct[1])[1]#可以得到单个单词,向量形式 #2、data.frame法,批量处理时,因为不等长而无法合并 data.frame(Job_Pwordseg.ct[1]) #变成了序号+单词 data.frame(unlist(Job_Pwordseg.ct[1])) #跟list一样的结果 #3、as.character as.character(unlist(Job_Pwordseg.ct[1])) #[1] "职位" "描述" "Android" "平台" "进行" "手机" as.character(Job_Pwordseg.ct[1]) #[1]"c(\"职位\", \"描述\", \"Android\", \"平台\", \"进行\")变换得到了数据之后,又出现了问题: 如何将list中那么子集合并?——不等长合并 两种方法:c(),可以将list[1] 和list[2]进行直接合并,可以兼容不等长,当然合并之后,还有list文件; rbind.fill函数,不等长合并函数,在plyr包中。 #4、t()在list的文本型 t(data.frame(Job_Pwordseg.ct[1])) #A [,1] [,2] [,3] #"职位" "描述" "Android" data.frame(t(data.frame(Job_Pwordseg.ct[1]))) #A [,1] [,2] [,3] #职位 描述 Android #4、list中字符的合并用c c(Job_Pwordseg.ct[1],Job_Pwordseg.ct[2])不等长合并的时候,rbind.fill函数可以很好将数据进行合并,并且补齐没有匹配到的缺失值为NA。 #如何解决合并时数据不等长问题——两种方法:do.call函数以及rbind.fill函数(plyr包) #rbind.fill函数只能合并数据框格式 #do.call函数在数据框中执行函数(函数,数据列) library("plyr") #加载获取rbind.fill函数 #第一种方法 list1 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |