2012-01-01 33 views
6

Tôi có một vấn đề đơn giản nhưng lạ.Mất dữ liệu bằng cách sử dụng hàm unlist

chỉ mục.list là danh sách, chứa 118,771 thành phần (số nguyên hoặc số). Bằng cách áp dụng hàm unlist, tôi mất khoảng 500 phần tử.

Nhìn vào đoạn mã sau:

> indices <- unlist(indices.list, use.names = FALSE) 
> 
> length(indices.list) 
[1] 118771 
> length(indices) 
[1] 118248 

Làm thế nào là có thể ?? Tôi đã kiểm tra nếu indices.list chứa bất kỳ NA nào. Nhưng nó không:

> any(is.na(indices.list) == TRUE) 
[1] FALSE 

data.set.merged là một khung dữ liệu chứa hơn 200.000 hàng. Khi tôi sử dụng các chỉ số vector (mà dường như có chiều dài 118.248) để có được một tập con của data.set.merged, tôi nhận được một khung dữ liệu với 118,771 hàng! ?? Thật kỳ lạ!

data.set.merged.2 <- data.set.merged[indices, ] 
> nrow(data.set.2) 
[1] 118771 

Bất kỳ ý tưởng gì đang diễn ra ở đây?

+2

Ông có thể đưa thêm thông tin về 'indices' và 'indices.list', ví dụ' class (indicies) ',' str (indicies) ', v.v. – kohske

+1

Tôi thực sự muốn xem' dput (indices.list) '=) – aL3xa

+0

Ok, tôi đã xem xét dput (indices.list) và tìm thấy một số yếu tố nguyên (0). Nó có thể là vấn đề. làm thế nào tôi có thể kiểm tra có bao nhiêu yếu tố bằng intrger (0) ?? Và chính xác số nguyên (0) có nghĩa là gì? Tôi đã tạo ra indices.integer bằng cách sử dụng hàm grep. –

Trả lời

10

Vâng, đối với bí mật đầu tiên của bạn, giải thích có thể là một số yếu tố của indices.listNULL, có nghĩa là chúng sẽ biến mất khi bạn sử dụng unlist:

unlist(list(a = 1,b = "test",c = 2,d = NULL, e = 5)) 
    a  b  c  e 
    "1" "test" "2" "5" 
Các vấn đề liên quan