如何生成数字序列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, '+')

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章