在删除R中的行时,如何自动缩小R数据帧中的行号

时间:2012-09-11 01:16:16

标签: r dataframe row

我难以正确缩小数据框中的行号。

我有一个名为“mydata”的数据集,我使用 R 从文本文件导入。数据框大约有200行,有10列。

我使用以下方法删除了行号3,7,9,199:

mydata <- mydata[-c(3, 7, 9, 199),]

当我运行此命令时,行3,7,9,199从列表中消失,但行号不会自动缩小到196,而是保持在200.我觉得这些行号都附加到每个行号上“行”作为数据帧的一部分?

如何解决此问题?

更令我困惑的是,当我使用 R Studio导入文本文件时,我没有任何问题。 (当我运行上述命令时,我看到196)。但是当使用 R 时,我无法更改数据框中与列表中实际行数匹配的行号。

任何人都可以告诉我如何解决这个问题吗?

2 个答案:

答案 0 :(得分:9)

您可以这样做:

rownames(mydata) <- NULL
执行子集后

例如:

> mydata = data.frame(a=1:10, b=11:20)
> mydata = mydata[-c(6, 8), ]
> mydata
    a  b
1   1 11
2   2 12
3   3 13
4   4 14
5   5 15
7   7 17
9   9 19
10 10 20
> rownames(mydata) <- NULL
> mydata
   a  b
1  1 11
2  2 12
3  3 13
4  4 14
5  5 15
6  7 17
7  9 19
8 10 20

答案 1 :(得分:3)

您也可以使用以相同方式存储row.names的data.table包(请参阅data.table intro,而不是使用打印行号

请参阅部分,了解data.table如何与行名称

一起使用

data.table继承自data.frame,因此如果函数和pacakges仅接受 data.frames ,则data.tabledata.frame

例如

library(data.table)

mydata <- data.table(mydata)
mydata
##      a  b
##  1:  1 11
##  2:  2 12
##  3:  3 13
##  4:  4 14
##  5:  5 15
##  6:  6 16
##  7:  7 17
##  8:  8 18
##  9:  9 19
## 10: 10 20

mydata = mydata[-c(6, 8), ]
mydata
##     a  b
## 1:  1 11
## 2:  2 12
## 3:  3 13
## 4:  4 14
## 5:  5 15
## 6:  7 17
## 7:  9 19
## 8: 10 20