首页 > 解决方案 > 选择每第 n 行,偏移开始并重复

问题描述

我正在尝试在 data.frame 中创建一个新列,该列是通过选择从第一行开始的列的第 9 行(即第 1 行、第 9 行、第 17 行)创建的。一旦它到达列的第 n 行,我需要它从第 2 行开始重复此过程(选择第 2 行、第 10 行、第 18 行)。我的行数固定为 96,所以我需要它重复,直到它从第 9 行开始然后退出。

这是我想做的一个例子:

df <- data.frame(Row=1:96)
> df$nineth <- c(1,9,17,25,33,41,49,57,65,73,81,89,2,10,18,26,34,42,50,58,66,74,82,90)
> print(df)
   Row nineth
1    1      1
2    2      9
3    3     17
4    4     25
5    5     33
6    6     41
7    7     49
8    8     57
9    9     65
10  10     73
11  11     81
12  12     89
13  13      2
14  14     10
15  15     18
16  16     26
17  17     34
18  18     42
19  19     50
20  20     58
21  21     66
22  22     74
23  23     82
24  24     90

有没有办法使用for循环来做到这一点?我比apply家人更熟悉他们。

标签: rfor-loopapplylapply

解决方案


您可以使用 R 的矩阵/向量对偶性轻松地做到这一点......

df <- data.frame(Row=1:96)

df$nineth <- as.vector(matrix(df$Row, byrow = TRUE, ncol = 8))

head(df,15)
   Row nineth
1    1      1
2    2      9
3    3     17
4    4     25
5    5     33
6    6     41
7    7     49
8    8     57
9    9     65
10  10     73
11  11     81
12  12     89
13  13      2
14  14     10
15  15     18

推荐阅读