删除R中的一行后,数据帧将变为数字

删除R中的一行后,数据帧将变为数字,r,R,我有一个数据帧a > a # a is a data frame X1.4 one 1 two 2 three 3 four 4 当我要删除一行时 > a = a[-2,] # remove row 2 它会变成数值 > a [1] 1 3 4 为什么??我希望将它们保留为具有相同行名称和列名的数据帧 以下是dput: > dput(a) structure(list(X1.4 = 1:4), class

我有一个数据帧
a

> a        # a is a data frame
      X1.4
one      1
two      2
three    3
four     4
当我要删除一行时

> a = a[-2,] # remove row 2
它会变成数值

> a
[1] 1 3 4
为什么??我希望将它们保留为具有相同行名称和列名的数据帧

以下是dput:

> dput(a)
structure(list(X1.4 = 1:4), class = "data.frame", row.names = c("one", 
"two", "three", "four"))

我们可以使用
drop=FALSE

a[-2, , drop = FALSE]
#      X1.4
#one      1
#three    3
#four     4
由于默认情况下提取显示的
drop=TRUE

x[i,j,…,drop=TRUE]

在细节上,它说

下拉-用于矩阵和数组。如果为TRUE,则结果将强制到可能的最低维度(参见示例)。这只适用于提取元素,不适用于替换。有关更多详细信息,请参见drop


或者使用
tidyverse
,使用
slice

 library(dplyr)
 library(tibble)
 a %>%
    rownames_to_column('rn') %>%
    slice(-2) %>%
    column_to_rownames('rn')
 #      X1.4
 #one      1
 #three    3
 #four     4