使用View()显示时,删除行会导致出现“row.names”列

时间:2015-01-19 23:17:36

标签: r

要从数据框中删除行,请使用以下命令:

data <- data[-1, ] 

例如删除第一行。我需要删除前6行,所以我使用了以下内容:

data <- data[-c(1,2,3,4,5,6), ]

OR

data <- data[-(1:6), ]

就删除行名称而言,这是有效的,但引入了一个名为row.names的新列,除非我使用该命令,否则我无法删除:

row.names(data) <- NULL

这是什么原因?是否有更好的方法可以使用一个命令删除多个行/列?

实施例: enter image description here

在以下代码之后:

tquery <- tquery[-(1:6), ]

这是数据: enter image description here

2 个答案:

答案 0 :(得分:5)

尽管看起来如此,但实际上并没有在数据中添加列。您所看到的只是使用View()的结果。该函数显示&#34; row.names&#34;数据框的属性作为第一列,但您没有真正添加该列。

这是预期和记录的行为。来自help(View)

详细信息部分
  

如果数据框上的行名称不是1:nrow,则它们会显示在名为row.names的单独第一列中。

因此,由于您对数据进行了子集化,因此行名称在技术上不再 1:nrow,因此新列将在查看器中引入。

在控制台中打印您的数据,您将看到差异。

View(mtcars) ## because the mtcars row names are not 1:nrow

mtcars

基本上,不要信任View()来显示实际数据的精确表示。而是使用attributes()*names()dim()length()等,或者只使用head()查看数据。

答案 1 :(得分:2)

有关详情,请参阅r?help“?row.names”。从文档中,“所有数据框都有行名称属性”

?row.names ## get more information about row.names from r help

row.names不是新列,而是每个数据帧的属性。这只是元数据,大多数数据都会被忽略。当您输出此数据(即CSV)或在函数中使用它时,此数据不会干扰。这类似于excel在左边距上的行号,这是应用程序的参考数据。

str(your_dataframe) ## see that those columns don't exist
colnames(your_dataframe) ## see column names