如何通过循环在R语言中自动生成params列表?
动态生成对应命名的列表
你可以通过遍历向量元素+设置列表名称的方式实现自动生成,不用手动硬编码每个列表项。以下是两种常用实现方式:
基础R实现
# 定义需要的字段向量 experiences <- c("exp1", "grad_exp1", "grad_exp2") # 自动生成命名列表 params <- setNames( lapply(experiences, function(field) input[[field]]), experiences )
使用purrr包简化代码
如果你习惯用tidyverse工具链,purrr的写法更简洁:
library(purrr) experiences <- c("exp1", "grad_exp1", "grad_exp2") params <- map(experiences, ~input[[.]]) %>% set_names(experiences)
原理说明
input[[field]]:按字段名提取Shiny输入对象input中对应的元素,比input$field更适合动态场景lapply/map:遍历experiences向量的每个元素,批量提取对应值setNames/set_names:给生成的列表设置与向量元素一致的名称,最终得到和手动硬编码完全一致的params列表
当你扩展experiences向量(比如新增"grad_exp3"),params会自动包含对应的grad_exp3 = input$grad_exp3项,无需修改其他代码。
内容的提问来源于stack exchange,提问作者manu p
相关产品推荐
相关产品推荐

