在R语言中按指定频率生成条件数值的实现问题求助
问题分析与代码修正
你的核心需求是生成一个数据框,其中数字1到5分别按照size数组指定的次数重复(3、2、1、2、2次)。原代码存在以下问题:
- 初始数据框错误初始化了10个1,后续循环逻辑完全偏离需求
- 循环中混淆了「要重复的数字」和「重复次数」,
x_val取的是重复次数而非目标数字 - 赋值逻辑错误,
nrow(size[i])是无效写法,无法正确填充数据
修正后的代码
直接利用R的向量化操作,一行代码就能实现需求:
size <- c(3, 2, 1, 2, 2) data <- data.frame(x1 = rep(1:length(size), times = size)) print(data)
代码解释
1:length(size)生成目标数字序列1到5(因为size长度为5)rep(..., times = size)指定每个数字的重复次数,对应size数组的每个元素- 最后将生成的向量转为数据框,即可得到你想要的输出:
x1 1 1 2 1 3 1 4 2 5 2 6 3 7 4 8 4 9 5 10 5
如果一定要用循环实现(不推荐,R中向量化操作更高效),可以这样写:
size <- c(3, 2, 1, 2, 2) x1 <- c() for(i in 1:length(size)) { x1 <- c(x1, rep(i, times = size[i])) } data <- data.frame(x1) print(data)
内容的提问来源于stack exchange,提问作者NUdu
相关产品推荐
相关产品推荐

