创建含重复整数集的依赖变量时rep函数报错及实现需求
解决方法:生成符合规则的x、y、z变量
我明白你想要生成的变量规则了——核心是每3个x段对应一个z值,y在这3段里循环1、2、3,每个x段长度随机1-30。之前的代码逻辑没对齐分组关系,导致报错,我来帮你修正:
步骤1:生成所有分段的随机长度
首先我们需要120组z值,每组对应3个y分段(y=1、2、3),所以总共需要360个随机长度(1-30):
# 生成360个1-30的随机整数,每个对应一个x段的长度 segment_lengths <- sample(1:30, 360, replace = TRUE)
步骤2:生成y变量
y需要循环1、2、3,重复120次,然后每个y值重复对应分段的长度:
# 先创建y的基础序列:1、2、3重复120次 y_base <- rep(1:3, times = 120) # 每个y值重复对应segment_lengths的次数,得到最终y向量 y <- rep(y_base, times = segment_lengths)
步骤3:生成z变量
z每3个分段对应同一个值,从1递增到120,然后每个z值重复对应分段的长度:
# 先创建z的基础序列:1到120,每个值重复3次(对应y的一轮1-3循环) z_base <- rep(1:120, each = 3) # 每个z值重复对应segment_lengths的次数,得到最终z向量 z <- rep(z_base, times = segment_lengths)
步骤4:生成x变量
x是每个分段的整数序列(1到分段长度),把所有分段连起来:
# 遍历每个分段长度,生成对应的1:n序列,再合并成一个向量 x <- unlist(lapply(segment_lengths, function(n) 1:n))
验证示例逻辑
比如假设segment_lengths的前3个值是5、16、13(和你给的示例一致),那么:
- x的前5个元素是
1 2 3 4 5,接下来16个是1 2 ... 16,再接下来13个是1 2 ...13 - y的前5个是
1 1 1 1 1,接下来16个是2 2 ...2,再接下来13个是3 3...3 - z的前5+16+13=34个元素全是
1,下一个分段开始z变成2,y回到1,完全符合你的要求!
内容的提问来源于stack exchange,提问作者psyrgh
相关产品推荐
相关产品推荐

