我试图在不更改列名的情况下从数据框中删除行。
我尝试使用示例数据框删除第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
答案 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