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

时间:2019-08-13 14:33:46

标签: r numbers sequence

我想生成一个交替序列,以将它们输入到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次?

1 个答案:

答案 0 :(得分:2)

你可以

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

基本上利用R如何存储矩阵(列主矢量)

或者也许:

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