拆分和重组数据框时如何保留单个观察的行名?
How to preserve row names of single observations when splitting and reassembling data frames?
拆分数据帧并用 do.call(rbind, x)
重新组合时,行名变得混乱。前缀数字问题不大,因为它们很容易用正则表达式处理,但是列出只有一行的对象完全丢失了前一行名称。
例子
l1 <- split(mtcars, mtcars$disp)
# ... doing some stuff with l1
d <- do.call(rbind, l1)
d[10:15, ]
> d[10:15, ]
mpg cyl disp hp drat wt qsec vs am gear carb
140.8 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
145 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6
146.7 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
160.Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
160.Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
167.6.Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
预期输出: 在此示例中,与具有原始行名的 mtcars
完全相似,至少没有遗漏汽车名称正如上面的问题。
是否有补救措施?
您可以为此使用 unname
:
> d <- do.call(rbind, unname(l1))
> d[10:15, ]
mpg cyl disp hp drat wt qsec vs am gear carb
Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6
Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
拆分数据帧并用 do.call(rbind, x)
重新组合时,行名变得混乱。前缀数字问题不大,因为它们很容易用正则表达式处理,但是列出只有一行的对象完全丢失了前一行名称。
例子
l1 <- split(mtcars, mtcars$disp)
# ... doing some stuff with l1
d <- do.call(rbind, l1)
d[10:15, ]
> d[10:15, ]
mpg cyl disp hp drat wt qsec vs am gear carb
140.8 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
145 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6
146.7 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
160.Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
160.Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
167.6.Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
预期输出: 在此示例中,与具有原始行名的 mtcars
完全相似,至少没有遗漏汽车名称正如上面的问题。
是否有补救措施?
您可以为此使用 unname
:
> d <- do.call(rbind, unname(l1))
> d[10:15, ]
mpg cyl disp hp drat wt qsec vs am gear carb
Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6
Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4