seq_along 给出列号而不是行号

seq_along giving the column number not row number

我正在尝试编写一个 for 循环,它从数据框中的现有变量创建一个新变量,并通过依次迭代每一行来实现。我试过使用 for (i in seq_along(data)),但这只为前 19 行正确创建了新变量,我意识到 seq_along 没有像我预期的那样工作:而不是基于创建序列行数,它是根据列数计算的:

seq_along(data) returns

[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

同时 nrow(data) returns

[1] 82

ncol(data)returns

[1] 19

此外,seq(data) 的输出与 seq_alonglength(data) returns [1] 19.

的输出相同

虽然我有解决 for 循环 (for (i in 1:nrow(data))) 问题的解决方法,但我很想知道 seq_along(和 seqlength) 没有按我预期的方式运行。

将评论形式化为社区答案,seq_along(aDataFrame) 沿着数据框中的列排序,因为数据框也是 list()。我们可以使用 typeof() 函数来证明这一点,如下所示,使用 Motor Trend Cars 数据框。

> typeof(mtcars)
[1] "list"

列表中的每个元素都包含数据框中的一列。我们可以使用 names() 函数从列表中提取元素名称。

> names(mtcars)
[1] "mpg"  "cyl"  "disp" "hp"   "drat" "wt"   "qsec" "vs"   "am"   "gear" "carb"

因此,seq_along(mtcars)会产生一个1:11的向量,对应list()中的元素个数。

> seq_along(mtcars)
 [1]  1  2  3  4  5  6  7  8  9 10 11