R语言︱list用法、批量读取、写出数据时的用法

您所在的位置:网站首页 r语言遍历列表 R语言︱list用法、批量读取、写出数据时的用法

R语言︱list用法、批量读取、写出数据时的用法

2023-03-06 00:38| 来源: 网络整理| 查看: 265

列表是一种特别的对象集合,它的元素也由序号(下标)区分,但是各元素的类型可 以是任意对象,不同元素不必是同一类型。元素本身允许是其它复杂数据类型,比如,列表 的一个元素也允许是列表。例如:

> 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