2014-08-31 2 views
6

У меня есть кадр данных, из которого я хочу удалить все строки, сохраняя при этом исходную структуру (столбцы).как удалить все строки из data.frame в r

ddf 
    vint1 vint2 vfac1 vfac2 
1  9 10  1  3 
2  9  6  3  4 
3  6  2  2  2 
4 10  6  2  4 
5  7 12  3  2 
> 
> 
> 
> dput(ddf) 
structure(list(vint1 = c(9L, 9L, 6L, 10L, 7L), vint2 = c(10L, 
6L, 2L, 6L, 12L), vfac1 = structure(c(1L, 3L, 2L, 2L, 3L), .Label = c("1", 
"2", "3"), class = "factor"), vfac2 = structure(c(2L, 3L, 1L, 
3L, 1L), .Label = c("2", "3", "4"), class = "factor")), .Names = c("vint1", 
"vint2", "vfac1", "vfac2"), class = "data.frame", row.names = c(NA, 
-5L)) 

Я пробовал:

ddf = NA 

for(i in 1:nrow(ddf) ddf[i,] = NULL 

, но они не работают. Спасибо за помощь по этому основному вопросу.

+1

Вместо '0', может быть лучше использовать 'DF [ NULL,] ' –

ответ

14

Если вы действительно хотите удалить все строки:

> ddf <- ddf[0,] 
> ddf 
[1] vint1 vint2 vfac1 vfac2 
<0 rows> (or 0-length row.names)  

Если вы имеете в виду, сохраняя структуру с помощью заполнителей:

> ddf[,]=matrix(ncol=ncol(ddf), rep(NA, prod(dim(ddf)))) 
> ddf 
    vint1 vint2 vfac1 vfac2 
1 NA NA NA NA 
2 NA NA NA NA 
3 NA NA NA NA 
4 NA NA NA NA 
5 NA NA NA NA 
+1

Почему нуль? Я думаю, что 'ddf <- ddf [c(),]' имеет больше смысла. –

+1

@GaborCsardi - не будет 'df [NULL,]' наиболее подходящим, логически? –

+1

Ну, если вы знаете, что означает индексирование с помощью 'NULL'. Аналогично индексированию с нулем. Они оба задокументированы, поэтому они являются прекрасными решениями. Но я думаю, что 'c()' просто интуитивно понятен, вы выбираете нулевые строки. Чтобы быть уверенным в 'NULL' и ноль, я должен был проверить руководство ..... Но, возможно, это только я, и все остальные знают, что означает индексирование с помощью NULL. –

Смежные вопросы