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_along
和 length(data)
returns [1] 19
.
的输出相同
虽然我有解决 for 循环 (for (i in 1:nrow(data))
) 问题的解决方法,但我很想知道 seq_along
(和 seq
和 length
) 没有按我预期的方式运行。
将评论形式化为社区答案,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
我正在尝试编写一个 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_along
和 length(data)
returns [1] 19
.
虽然我有解决 for 循环 (for (i in 1:nrow(data))
) 问题的解决方法,但我很想知道 seq_along
(和 seq
和 length
) 没有按我预期的方式运行。
将评论形式化为社区答案,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