2014-08-31 28 views
6

Tôi có một khung dữ liệu mà từ đó tôi muốn xóa tất cả các hàng trong khi vẫn giữ nguyên cấu trúc ban đầu (cột).cách xóa tất cả các hàng khỏi một data.frame trong 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)) 

tôi đã cố gắng:

ddf = NA 

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

nhưng họ không làm việc. Cảm ơn sự giúp đỡ của bạn về câu hỏi cơ bản này.

+1

Thay vì '0', có thể là tốt hơn để sử dụng' df [ NULL,] ' –

Trả lời

14

Nếu bạn thực sự muốn xóa tất cả các hàng:

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

Nếu bạn có ý nghĩa bằng cách giữ cấu trúc bằng cách sử dụng placeholders:

> 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

Tại sao số không? Tôi nghĩ 'ddf <- ddf [c(),]' có ý nghĩa hơn. –

+1

@GaborCsardi - sẽ không 'df [NULL,]' là thích hợp nhất, hợp lý? –

+1

Vâng, nếu bạn biết những gì lập chỉ mục với 'NULL' có nghĩa là. Tương tự để lập chỉ mục bằng 0. Cả hai đều là tài liệu, vì vậy chúng là những giải pháp tốt. Nhưng tôi nghĩ 'c()' chỉ trực quan hơn, bạn chọn 0 hàng. Để chắc chắn về 'NULL' và không, tôi đã phải kiểm tra hướng dẫn ..... Nhưng có lẽ nó chỉ là tôi và mọi người khác biết những gì lập chỉ mục với' NULL' có nghĩa là. –

Các vấn đề liên quan