R For循环-合并id时的问题

jrcvhitl  于 2023-05-26  发布在  其他
关注(0)|答案(1)|浏览(213)

我正试图制作一份标准化的报告,覆盖27个部门。当我尝试合并一些部门时,我遇到了一些问题,希望这是一些我还没有学会的简单东西。此外,抱歉没有提供一个reprex,我会尝试这样做,如果问题不是立即明显。
我的基本设置是:
1.创建一个for循环,通过我指定的部门名称列表运行。
for (id in c('Dept1','Dept2','Dept3'.... etc))
Dept <- id
1.将这个for放入一个函数中,该函数在使用支持的Template.rmd文件呈现报告之前使用循环id来处理数据。模板文件生成一个flexdashboard,并在其所有表/图中具有filter(Department %in% Dept)
rmarkdown::render("C:/R//Template.rmd",output_file = paste0('Dept_', str_to_title(id), '.html'))
到目前为止,这工作得很好。
我的下一个挑战是创建相同的报告,但合并了一些部门。我认为/希望的工作如下:

  • 在for循环之前创建一个新的id DeptMerge <- list('Dept1','Dept2')
  • 把这个添加到我的循环中:for (id in c('DeptMerge','Dept3'.... etc))

不幸的是,这会导致DeptMerge id的空白报告,但单个报告(例如Dept 3)看起来很好,不受影响。
我无法理解的是,如果我打开Template.rmd文件,手动将过滤器从filter(Department %in% Dept)更改为filter(Department %in% DeptMerge),然后运行块,那么表和图显示良好。只是当我试图渲染的时候。
希望这是明确的,任何建议真的很感激。

bpsygsoo

bpsygsoo1#

1.定义要合并的部门列表:
deptMerge <- list('Dept1', 'Dept2'
1.修改循环以检查当前部门是否在deptMerge列表中。如果是,则将合并的部门名称分配给Dept变量。否则,指定单个部门名称。
for(id in c('Dept1 ',' Dept2','Dept3',...)){ if(id %in% deptMerge){ Dept <- 'MergedDept' } else { Dept <- id }

# Rest of your code for data wrangling and rendering the report
   rmarkdown::render("C:/R/Template.rmd", output_file = paste0('Dept_', str_to_title(Dept), '.html'))
 }

通过这样做,当循环遇到deptMerge列表中的部门时,它会将值'MergedDept'分配给Dept变量。对于不在deptMerge列表中的各个部门,它将分配相应的部门名称。
请确保您在循环中有必要的数据处理步骤,以根据您的特定要求适当地处理部门合并。

相关问题