如何循环遍历howmany与howmuch参数批量生成修改后的DataFrame?
实现参数组合遍历生成多个DataFrame
你可以通过生成参数的笛卡尔积组合,再批量调用函数的方式实现需求,具体代码如下:
# 保留你原有的数据与函数 value <- iris[1:120,] cngfunc <- function(day,howmany,howmuch){ shuffled <- day[sample(1:nrow(day)), ] n <- as.integer((howmany/100)*nrow(day)) # 选取待修改数据的比例 extracted <- shuffled[1:n, ] extracted$changed <- extracted[,1]*((howmuch/100)+1) # 设置数据修改幅度 extracted } # 生成howmany与howmuch的所有组合 param_pairs <- expand.grid( howmany = c(10,20,30,40,50), howmuch = c(10,20,30,40,50) ) # 遍历所有参数组合,生成对应DataFrame并存储为列表 df_list <- lapply(1:nrow(param_pairs), function(idx) { cngfunc( day = value, howmany = param_pairs$howmany[idx], howmuch = param_pairs$howmuch[idx] ) }) # 为列表元素命名,便于识别对应参数 names(df_list) <- apply(param_pairs, 1, function(row) { sprintf("howmany_%s_howmuch_%s", row["howmany"], row["howmuch"]) })
关键说明:
expand.grid会生成包含25组参数的表格,覆盖howmany和howmuch的所有笛卡尔积组合;lapply遍历参数表格的每一行,调用cngfunc生成对应的DataFrame,最终结果以列表形式存储(df_list包含25个DataFrame);- 最后通过
sprintf为列表元素命名,你可以通过类似df_list[["howmany_20_howmuch_30"]]的方式快速定位到指定参数组合的结果。
内容的提问来源于stack exchange,提问作者pkha
相关产品推荐
相关产品推荐

