有没有办法在 R 中读取整个文件文件夹,然后导出为 1 个 excel 工作簿,每个文件都输出为工作表?



我主要只是在将文件导出为工作表而不是单个 excel 文件时遇到问题。发生这种情况的原因是因为我在我的 for 循环中拥有它。我如何在不循环 write.xlsx 函数本身的情况下在循环中写入.xlsx我的所有文件?

library(splitstackshape)
library(dplyr)
library(mgsub)
library(openxlsx)
files <- list.files(path="text files", pattern="*.txt", full.names=TRUE, recursive=TRUE) 
for(j in files){
b <- readLines(j) 
b <- mgsub(b, c('t','for','hi'), c(',','food','hello')) 
b <- data.frame(b) 
b <- cSplit(b,1:ncol(b),sep = ',',stripWhite = TRUE, type.convert = FALSE) 
b <- subset(b,select = -c(3,9))
n <- dim(b)[1] 
b <- b[1:(n-8),] 
b[is.na(b)] <- '' 
write.xlsx(b,file = "output files", append = TRUE)
}

假设您使用的是openxlsx包中的write.xlsx函数,则可以将对象列表传递给该函数,它将为列表中的每个对象创建一个工作表。

这样的事情应该有效:

library(splitstackshape)
library(dplyr)
library(mgsub)
files <- list.files(path="text files", pattern="*.txt", full.names=TRUE, recursive=TRUE) 
result_list <- list()
for(j in 1:length(files)){
b <- readLines(files[j]) 
b <- mgsub(b, c('t','for','hi'), c(',','food','hello')) 
b <- data.frame(b) 
b <- cSplit(b,1:ncol(b),sep = ',',stripWhite = TRUE, type.convert = FALSE) 
b <- subset(b,select = -c(3,9))
n <- dim(b)[1] 
b <- b[1:(n-8),] 
b[is.na(b)] <- '' 
result_list[[j]] <- b
}
write.xlsx(result_list, file = "output file")

最新更新