要从数据框中删除行,请使用以下命令:
data <- data[-1, ]
例如删除第一行。我需要删除前6行,所以我使用了以下内容:
data <- data[-c(1,2,3,4,5,6), ]
OR
data <- data[-(1:6), ]
就删除行名称而言,这是有效的,但引入了一个名为row.names
的新列,除非我使用该命令,否则我无法删除:
row.names(data) <- NULL
这是什么原因?是否有更好的方法可以使用一个命令删除多个行/列?
实施例:
在以下代码之后:
tquery <- tquery[-(1:6), ]
这是数据:
答案 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