2017-02-15 4 views
1

Я пытаюсь удалить строки из моего фрейма данных без изменения имени столбца.Как удалить строки из фрейма данных без изменения его размера

Я попробовал его с рамкой выборки данных, чтобы удалить строку 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 

ответ

1

Если проверить ?Extract , опция по умолчанию

х [I, J, ..., падение = TRUE]

Таким образом, измените его drop=FALSE не уронить размеры

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

Или в качестве альтернативы, subset может использоваться, который имеет drop=FALSE по умолчанию

subset(df, v1=="c")  
+0

Что делает падение = делать? – Montosh123

+1

@hotterthanmath Если у вас есть одна строка или один столбец в результате подмножества, она будет уменьшать размеры, чтобы преобразовать их в 'vector' – akrun

+1

Большое вам спасибо за вашу помощь – Montosh123

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