我想生成一个交替序列,以将它们输入到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次?
答案 0 :(得分:2)
你可以
c(rbind(1+4*(1:k), 2+4*(1:k)))
基本上利用R如何存储矩阵(列主矢量)
或者也许:
sweep(4L*rbind(1:k, 1:k), 1L, 1:2, '+')