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

在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 03:25:14