R语言生成填充随机整数的变量:为mtcars添加1-3区间随机整数的实现方法
为mtcars添加1-3范围随机整数列的可落地实现方案
核心逻辑非常简单:生成与数据集行数完全等长的随机整数向量,再绑定为数据框的新列即可,全程不需要额外安装第三方依赖也能完成。
- 基础R原生实现(无包依赖,通用场景首选)
关键注意点:取值范围只有3个整数,但mtcars有32行,抽样时必须开启有放回模式,否则会直接触发参数报错。
可直接运行的代码:
运行完用# 可选设置随机种子,让生成的结果可复现 set.seed(123) # 生成随机整数并赋值为新列 mtcars$rand_int <- sample(x = 1:3, size = nrow(mtcars), replace = TRUE)head(mtcars)就能看到新增的rand_int列已经全部填充了1、2、3范围内的整数值。 - tidyverse工作流适配实现
如果日常用dplyr做数据清洗,可以结合管道写更连贯的代码,不需要手动计算数据集行数:
这里的library(dplyr) set.seed(123) mtcars <- mtcars %>% mutate(rand_int = sample(1:3, size = n(), replace = TRUE))n()会自动识别当前数据集的总行数,和手动写nrow(mtcars)效果完全一致。
实用小技巧:如果需要自定义三个随机值的出现概率,可以给
sample()补充prob参数,比如写sample(1:3, size = nrow(mtcars), replace = TRUE, prob = c(0.5, 0.3, 0.2)),就代表1、2、3的出现概率分别为50%、30%、20%,可以根据需求自由调整。
内容的提问来源于stack exchange,提问作者Englishman Bob
相关产品推荐
相关产品推荐

