首页 > 解决方案 > R:删除列后数据框变成向量

问题描述

我有一个数据框:

  L1 2020 NA
1  1    0  0
2  2    1  0
3  3    1  0

我想删除第一列和最后一列,以获得这样的数据框:

2020 
1  0 
2  1 
3  1 

我试过:1)

df <- df[,-c(1,ncol(df))]

或 2)

df <- subset(df, select = -c(1,ncol(df)))

对于这两个我得到结果:

[1] 0 1 1

所以我猜它把数据框变成了向量。如何删除这些列以将其保留为数据框?保持这样的状态对我来说很重要。当有更多列时,我没有这个问题。它仅在应该留下一列时更改。

标签: rdataframe

解决方案


在方括号中指定列后,在其后添加,drop=FALSE

-argumentdropTRUE默认的,你正在为这个默认而苦苦挣扎。

df <- data.frame(a=1:10,b=1:10)
df[,1] #R simplifies to a vector via implicit drop=TRUE default
df[,1,drop=FALSE] #dataframe-structure remains

推荐阅读