如何生成数列1,2,5,6,9,10,13,14,

How to generate number sequence 1,2,5,6,9,10,13,14,

我想生成一个交替序列,将它们输入到 R 中的数据框中。每个元素总是两个(在我的例子中:2x 女儿,2x 母亲)。在我的具体示例中,我使用索引 1、2、5、6、9、10 等

我想要的输出是以下形式的数据框:

df <- data.frame(values=c(sample(1:8)), relation=c("daughter", "daughter", "mother", "mother", "daughter", "daughter", "mother", "mother"))
df

  values relation
1      4 daughter
2      3 daughter
3      2   mother
4      8   mother
5      1 daughter
6      5 daughter
7      6   mother
8      7   mother

我可以找到正确的索引来替换初始条目:

daughter_id <- sort(c(seq(1,20, 4), seq(2,20, 4)))
mother_id <- sort(c(seq(3,20, 4), seq(4,20, 4)))

它有效并允许我输入我想要的值:

df[daughter_id ,"relation"] <- "daughter"
df[mother_id,"relation"] <- "mother"

但是有更简单的解决方案吗? 有没有直接插入某些值n次的方案?

你可以做到

c(rbind(1+4*(1:k), 2+4*(1:k)))

基本上利用了 R 存储矩阵(列主向量)的方式

或者也许:

sweep(4L*rbind(1:k, 1:k), 1L, 1:2, '+')