Trong giao diện điều khiển, đi trước và thửTại sao 1,99,999 == "1" .. "99,999" trong R, nhưng 100.000! = "100.000"?
> sum(sapply(1:99999, function(x) { x != as.character(x) }))
0
Đối với tất cả các giá trị từ 1 đến 99999, "1" == 1
, "2" == 2
..., 99999 == "99999"
là TRUE
. Tuy nhiên,
> 100000 == "100000"
FALSE
Tại sao R có hành vi kỳ quặc này và đây có phải là lỗi không? Điều gì sẽ là một giải pháp để, ví dụ: kiểm tra xem mọi phần tử trong vectơ ký tự nguyên tử có thực sự là số không? Ngay bây giờ tôi đã cố gắng để kiểm tra xem x == as.numeric(x)
cho mỗi x
, nhưng điều đó không thành công trên bộ dữ liệu nhất định do vấn đề trên!
Không, tổng đó là zero, không phải "TRUE" ... – Frank
@JoshuaUlrich bạn có thể giải thích cách những trùng lặp? –
Đối với vấn đề được mô tả trong đoạn cuối, bạn có thể 'khớp' vectơ ký tự đầu vào của bạn với '1: 100000' (là một số nguyên vector):' match (as.character (1: 100000), 1: 100000) ' . – Frank