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

如何在R语言中生成以上一列值为上限的间隔采样新列?

解决方案

原代码的问题在于,mutate中直接使用seq(1, A, 1/4)和sample时,这两个函数不会逐行处理A列的每个值,而是将A作为整体向量处理,导致采样逻辑不符合预期。以下是两种可行的解决方法:

方法1:使用dplyr的行分组(rowwise)

library(dplyr)

# 生成示例数据
my_data = data.frame(A = sample(seq(1, 20, 1/4), 10))

# 逐行生成采样列B
my_data %>%
  rowwise() %>%
  mutate(B = sample(seq(1, A, 1/4), size = 1)) %>%
  ungroup()
  • rowwise()会强制后续的mutate操作逐行执行,确保每行的A值都能单独用来生成对应的序列并采样。
  • 完成后用ungroup()取消行分组,避免影响后续的数据操作。

方法2:使用purrr的映射函数(map_dbl)

library(dplyr)
library(purrr)

# 生成示例数据
my_data = data.frame(A = sample(seq(1, 20, 1/4), 10))

# 遍历A列每个值生成采样结果
my_data %>%
  mutate(B = map_dbl(A, ~sample(seq(1, .x, 1/4), size = 1)))
  • map_dbl()会遍历A列的每个元素(~后的.x指代当前元素),对每个元素执行采样逻辑,最终返回数值型向量作为新列B。

内容的提问来源于stack exchange,提问作者Ramakrishna S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 23:31:04