如何在不更改其维度的情况下从数据框中删除行

时间:2017-02-15 05:32:11

标签: r dataframe

我试图在不更改列名的情况下从数据框中删除行。

我尝试使用示例数据框删除第3行:

> df <- data.frame(v1=c('a', 'b', 'c'))
> df
  v1
1  a
2  b
3  c
> new <- df[!(df$v1=='c'),]
> new
[1] a b
Levels: a b c

我做错了什么,我没有得到新的:

   v1
1  a
2  b

2 个答案:

答案 0 :(得分:1)

如果我们检查?Extract,则默认选项为

  

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

因此,请将其更改为drop=FALSE以不删除维度

df[!(df$v1=='c'),, drop=FALSE]
#  v1
#1  a
#2  b

或者作为替代方案,subset可以使用默认情况下drop=FALSE

subset(df, v1=="c")    

答案 1 :(得分:1)

您还可以使用as.data.frame()将其转换为dataframe,如下所示:

> df <- data.frame(v1=c('a', 'b', 'c'))
> df
  v1
1  a
2  b
3  c
> new <- df[!(df$v1=='c'),]
> new
[1] a b
Levels: a b c


>as.data.frame(new)# use as.data.frame () function
  new
1   a
2   b