R循环-将文件子集并运行xlsx代码

R循环-将文件子集并运行xlsx代码,r,loops,for-loop,filter,xlsx,R,Loops,For Loop,Filter,Xlsx,我有一个由3个变量组成的数据框架,其中一个变量称为staff,它包含13个不同的员工组,变量y称为countries,它包含员工所在的10个国家。每个国家都应该与相应的工作人员小组一起放入自己的excel工作簿中。因此,我应该有13 x 10个排列,我希望每个国家都有一个excel工作簿,我正在使用XLSX包来实现这一点,但我希望创建一个循环,按国家过滤数据,并将每个国家保存到自己的excel文件中,这样我就不必重复代码10次。我的数据帧名称是“成本” 下面是我的代码,我到目前为止,我没有得到任

我有一个由3个变量组成的数据框架,其中一个变量称为staff,它包含13个不同的员工组,变量y称为countries,它包含员工所在的10个国家。每个国家都应该与相应的工作人员小组一起放入自己的excel工作簿中。因此,我应该有13 x 10个排列,我希望每个国家都有一个excel工作簿,我正在使用XLSX包来实现这一点,但我希望创建一个循环,按国家过滤数据,并将每个国家保存到自己的excel文件中,这样我就不必重复代码10次。我的数据帧名称是“成本”

下面是我的代码,我到目前为止,我没有得到任何错误,但我也没有得到任何输出

countries <- c("Ireland", "Scotland", "England", "Wales", "Germany", "Italy", "Russia", "Denmark", "USA", "Spain")

for(countriesb in countries){

#create excel output for each country
wb = createWorkbook(type="xlsx")

Costsheet = createSheet(wb, "Country")

Cost%>% filter(country==countriesb)

xlsx.addTitle<-function(sheet, rowIndex, title, titleStyle){
rows <-createRow(sheet,rowIndex=rowIndex)
sheetTitle <-createCell(rows, colIndex=1)
setCellValue(sheetTitle[[1,1]], title)
setCellStyle(sheetTitle[[1,1]], titleStyle)

TITLE_STYLE <- CellStyle(wb)+ Font(wb,  heightInPoints=16, 
                                   color="blue", isBold=TRUE, underline=0)

xlsx.addTitle(Cost, rowIndex=1, title="Cost",titleStyle = TITLE_STYLE)
addDataFrame(Cost, Costsheet, startRow =3, row.names=FALSE)

saveWorkbook(wb, "country.xlsx")

}
}
countries%筛选器(country==countriesb)

xlsx.addTitle考虑以下最小示例:

require("xlsx")

wb = createWorkbook(type="xlsx") #Create a workbook outside of the loop

x <- c("USA","UK","NL")

for(i in x){
    sh = createSheet(wb, as.character(i)) #Create Sheets inside the loop with corresponding x-values as sheet names
    addDataFrame(mtcars,sh, startRow =3, row.names=FALSE) # Add your data to the sheets
}

saveWorkbook(wb, "C:/YourPath/Yourfile.xlsx") # save your workbook outside the loop
require(“xlsx”)
wb=Create工作簿(type=“xlsx”)#在循环之外创建工作簿

每次迭代都会覆盖工作簿。回头看,这是非常明显的!谢谢我没有得到任何输出,我希望最后一个国家会有一个输出?你需要实际编写xlsx。请看一下saveWorkbook的功能?当我只在一个国家测试它时,它就起作用了,它给了我一个输出Hanks,逻辑是合理的。我将尝试将其应用于我的问题,我希望每个国家都有单独的工作簿,而不是选项卡。有没有办法为每个国家保存动态文件名(例如saveWorkbook(wb,x.xlsx))?使用
粘贴
功能。干杯!我在谷歌搜索后发现了这一点。我使用了文件名