首页 > 解决方案 > 在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(a)
structure(list(X1.4 = 1:4), class = "data.frame", row.names = c("one", 
"two", "three", "four"))

标签: r

解决方案


我们可以用drop = FALSE

a[-2, , drop = FALSE]
#      X1.4
#one      1
#three    3
#four     4

默认情况?Extract下显示drop = TRUE

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

在细节中,它说

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


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

推荐阅读