按顺序创建重复值的顺序?

| 我需要一个重复的数字序列,即
1 1 ... 1 2 2 ... 2 3 3 ... 3 etc.
实现的方式是:
  nyear <- 20
  names <- c(rep(1,nyear),rep(2,nyear),rep(3,nyear),rep(4,nyear),
             rep(5,nyear),rep(6,nyear),rep(7,nyear),rep(8,nyear))
可以,但是笨拙,显然扩展性不佳。 如何依次将N个整数重复M次? 我试着嵌套
seq()
rep()
,但这并不能完全满足我的要求。 我显然可以编写一个for循环来执行此操作,但是应该有一个固有的方法来执行此操作!     
已邀请:
        您错过了
rep()
each=
参数:
R> n <- 3
R> rep(1:5, each=n)
 [1] 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5
R> 
所以你的例子可以用一个简单的
R> rep(1:8, each=20)
    
        对于您的示例,Dirk的答案是完美的。如果您有一个数据框,并且想要将这种序列添加为列,则还可以使用groupdata2中的
group
(免责声明:我的包)将这些数据点贪婪地分为几组。
# Attach groupdata2
library(groupdata2)
# Create a random data frame
df <- data.frame(\"x\" = rnorm(27))
# Create groups with 5 members each (except last group)
group(df, n = 5, method = \"greedy\")
         x .groups
     <dbl> <fct>  
 1  0.891  1      
 2 -1.13   1      
 3 -0.500  1      
 4 -1.12   1      
 5 -0.0187 1      
 6  0.420  2      
 7 -0.449  2      
 8  0.365  2      
 9  0.526  2      
10  0.466  2      
# … with 17 more rows
有各种各样的方法可以创建这种分组因子。例如。按组数,组大小列表或在某列中的值与上一行中的值不同时开始使组开始(例如,如果某列为“ 10”,则分组因子为“ 11”)。     

要回复问题请先登录注册