seq_along 给出列号而不是行号

Mat*_*Law 0 r seq

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

seq_along(data)回报

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

nrow(data)返回时

[1] 82

ncol(data)返回

[1] 19

此外, 的输出与seq(data)的输出相同seq_along,并length(data)返回[1] 19

虽然我有一个解决方法可以解决 for 循环 ( for (i in 1:nrow(data))) 的问题,但我很想知道seq_along(andseqlength) 的行为不符合我预期的原因是什么。

Len*_*ski 5

将评论形式化为社区答案,seq_along(aDataFrame)沿着数据框架中的列进行排序,因为数据框架也是list(). typeof()我们可以通过 Motor Trend Cars 数据框的函数来演示这一点。

> typeof(mtcars)
[1] "list"
Run Code Online (Sandbox Code Playgroud)

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

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

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

> seq_along(mtcars)
 [1]  1  2  3  4  5  6  7  8  9 10 11
Run Code Online (Sandbox Code Playgroud)