这期内容当中小编将会给大家带来有关openxlsx包批量导入导出Excel文件的实用技巧是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
install.packages("openxlsx")library("openxlsx")
导出excel文件
导出excel文件使用的是write.xlsx函数,通过介绍我们可以看到该函数主要是将数据框导出为xlsx文件,同时由于excel可存在多个sheet,该函数也支持导出a list of data.frames。
因此命令如下:
l <- list("IRIS" = iris, "MTCARS" = mtcars) # 将R内置数据集iris和mtcars创建为listwrite.xlsx(l, "writeList.xlsx") #excel文件导出在该目录下并命名为writeList.xlsx# 要导出单个文件时,直接write.xlsx(变量名称,“保存位置与文件名")即可
可以看到最后导出的excel存在IRIS和MTCARS两个sheet
导入excel文件
文件的导入是使用read.xlsx函数,使用的方法也非常简单,主要设置excel的文件位置以及sheet名称或顺序(如果存在多个sheet)
比如导入我们刚刚创建的excel文件中的第一个sheet,则命令为
iris <- read.xlsx(xlsxFile = "writeList.xlsx", sheet = 1)# 或者iris <- read.xlsx(xlsxFile = "writeList.xlsx", sheet = "IRIS")
批量导入excel文件中的多个sheet
上述命令只能导入excel的一个sheet,在实际过程中可能需要一次性导入多个sheet,则可以使用循环函数实现:
data.list <- list() # 创建一个空的listsheetname <- getSheetNames("writeList.xlsx") #使用getSheetNames函数获取excel文件的sheet名称for(i in 1:length(sheetname)){ data.list[[i]]<-read.xlsx("writeList.xlsx",sheet=i) # 循环读取excel文件的每个sheet names(data.list)[i] <- sheetname[i] #将data.list的每个文件名命名为每个sheet的名字}
批量导入多个excel文件
有时需要将目录下的多个文件一次性导入R中,则可以使用如下命令实现,但是需注意的是该命令只支持每个excel只有一个sheet
myexcelfile = list.files(pattern="*.xlsx") # list.files函数中用正则表达式匹配文件名的一个选项list2env( lapply(setNames(myexcelfile, make.names(gsub("*.xlsx$", "", myexcelfile))), read.xlsx), envir = .GlobalEnv) #匹配以.xlsx结尾的文件名,将其替换为空,也就是去掉.xlsx,只留文件名作为变量名
批量导入多个txt或者excel文件
同理我们可以利用该命令批量导入csv或者txt文档
mytxtfile = list.files(pattern="*.txt") # 生成.txt文件的列表list2env( lapply(setNames(mytxtfile, make.names(gsub("*.txt$", "", mytxtfile))), read.table,header=TRUE,sep="\t"), envir = .GlobalEnv) mycsvfile = list.files(pattern="*.csv") # 生成.csv文件的列表list2env( lapply(setNames(mycsvfile, make.names(gsub("*.csv$", "", mycsvfile))), read.csv,header=TRUE,check.names=FALSE), envir = .GlobalEnv)
上述就是小编为大家分享的openxlsx包批量导入导出Excel文件的实用技巧是什么了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。