如何用for循环按字符串列表元素生成对应命名的子DataFrame
用for循环拆分DataFrame为多个子DataFrame
核心实现代码
直接用for循环结合assign()函数就能完成需求:
# 遍历目标列表中的每个元素 for (item_name in lst) { # 拼接子DataFrame的命名 target_df_name <- paste0(item_name, "_df") # 筛选对应行并赋值到全局环境 assign(target_df_name, df[df$item == item_name, ]) }
代码说明
paste0(item_name, "_df"):自动生成item1_df、item2_df这类符合要求的变量名df[df$item == item_name, ]:筛选出df中item列等于当前遍历元素的所有行assign():将筛选后的子DataFrame绑定到全局环境的对应变量上,执行后直接调用item1_df就能获取对应数据
可选优化:跳过不存在的元素
如果lst中存在df$item里没有的元素,会生成空DataFrame,可添加判断跳过这类情况:
for (item_name in lst) { target_df_name <- paste0(item_name, "_df") if (item_name %in% df$item) { assign(target_df_name, df[df$item == item_name, ]) } else { message(paste(item_name, "不存在于df$item中,已跳过")) } }
内容的提问来源于stack exchange,提问作者therickster
相关产品推荐
相关产品推荐

