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

R语言实现将向量元素循环递归分配到数据框指定列

实现循环分配人名到数据框列的方法

这里提供两种简单的R语言实现方式,都能满足你循环分配人名的需求:

方法一:使用rep()函数循环重复向量

rep()函数可以轻松实现向量的循环重复,通过length.out参数指定最终生成的向量长度为数据框的行数即可:

# 定义人名向量和数据框
v <- c("John", "Paul", "Annie")
df1 <- data.frame(ROOM = c("ROOM01", "ROOM02", "ROOM03", "ROOM04", "ROOM05", "ROOM06", "ROOM07","ROOM08", "ROOM09","ROOM10","ROOM11","ROOM12", "ROOM13", "ROOM14"),
                  PERSON = NA)

# 循环分配人名
df1$PERSON <- rep(v, length.out = nrow(df1))

# 查看结果
print(df1)

运行后会直接得到你预期的数据集,rep()会自动按John→Paul→Annie的顺序循环填充,直到覆盖所有14行。

方法二:利用模运算生成循环索引

通过模运算手动生成循环的索引位置,再从人名向量中取值:

# 定义人名向量和数据框
v <- c("John", "Paul", "Annie")
df1 <- data.frame(ROOM = c("ROOM01", "ROOM02", "ROOM03", "ROOM04", "ROOM05", "ROOM06", "ROOM07","ROOM08", "ROOM09","ROOM10","ROOM11","ROOM12", "ROOM13", "ROOM14"),
                  PERSON = NA)

# 生成循环索引并赋值
df1$PERSON <- v[(seq_len(nrow(df1)) - 1) %% length(v) + 1]

# 查看结果
print(df1)

原理说明:seq_len(nrow(df1))生成1到14的序列,减1后变成0到13,对向量长度3取模得到0、1、2的循环序列,再加1后就对应人名向量的1、2、3索引,实现循环取值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 18:15:42