You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言for循环如何动态赋值变量并更新数据框避免重复采样

问题解决方法

你当前需要实现动态读取每次循环生成的p_i变量值来过滤数据框,共有两种可行方案:

方案1:直接适配现有写法

你可以用get()函数根据变量名字符串读取对应变量的值,直接替换原有代码里的x即可,修改后的循环代码如下:

for(i in pick_list) {
  assign(paste0('p_',i),sample(df[1:5,3], 1, replace = FALSE, prob = NULL))
  # get()可直接获取动态生成的p_i变量的值
  df <- df[!(df$PLAYER.NAME == get(paste0('p_',i))),]
}

注意:当前你采样时取的是df前5行的第3列,建议确认第3列就是PLAYER.NAME列,否则会出现匹配失败无法正常去重的问题,直接写df$PLAYER.NAME代替df[1:5,3]稳妥性更高。

方案2:更适合新手的简化写法

不推荐用assign生成大量独立的p_1到p_150变量,既难管理又冗余,你可以直接用一个向量存储所有选中的选手名,代码更简洁好维护:

# 初始化向量存储所有选中的选手
picked_players <- c()

for(i in pick_list) {
  # 直接把当前选中的选手存到变量中,不需要单独生成p_i变量
  current_pick <- sample(df[1:5,3], 1, replace = FALSE, prob = NULL)
  picked_players[i] <- current_pick
  # 直接用当前选中的选手名过滤数据框
  df <- df[!(df$PLAYER.NAME == current_pick),]
}

后续需要调取第n个顺位的选中结果时,直接调用picked_players[n]即可,比单独查找p_n变量更方便。

内容的提问来源于stack exchange,提问作者Mike Feeney

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 12:18:01