在拆分和重新组合数据帧时如何保留单个观察的行名? [重复]

问题描述 投票:1回答:1

这个问题在这里已有答案:

拆分数据帧并再次使用do.call(rbind, x)重新组装时,rownames会变得混乱。对于带前缀的数字,这不是一个问题,因为它们很容易用正则表达式处理,但只有一行的列表对象完全松开了前一行的名称。

Example

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与原始rownames完全相似,至少在上面的问题中没有丢失的车名。

可能有补救措施吗?

r split rowname
1个回答
2
投票

您可以使用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
© www.soinside.com 2019 - 2024. All rights reserved.