2013-08-05 34 views
7

tôi có thể tạo ra một chuỗi các con số theo một trong ba cách sau:Lớp một chuỗi các số

> 1:4 
[1] 1 2 3 4 

> seq(1,4) 
[1] 1 2 3 4 

> c(1,2,3,4) 
[1] 1 2 3 4 

Nhưng tại sao c() trả về một lớp khác nhau?

> class(1:4)  
[1] "integer" 

> class(seq(1,4)) 
[1] "integer" 

> class(c(1,2,3,4)) 
[1] "numeric" 

EDIT: thêm seq() vào cuộc thảo luận.

Trả lời

13

Phần Giá trị của help(":") cho biết toán tử kết quả trả về cái gì. Nó nói:

... sẽ có loại nguyên nếu từ có giá trị nguyên và kết quả là thể hiện trong kiểu số nguyên R.

Vì vậy, nếu from có thể được biểu diễn dưới dạng một số nguyên, toàn bộ vector được ép buộc để nguyên

> class(1.0:3.1) 
[1] "integer" 
> 1.0:3.1 
[1] 1 2 3 

Nói chung trong R, 1numeric. Nếu bạn muốn một integer, bạn phải thêm một L

> class(1) 
[1] "numeric" 
> class(1L) 
[1] "integer" 

Hơn nữa, c sẽ ép buộc tất cả các đối số "để một loại phổ biến là loại giá trị trả về" (từ ?c). Loại đó là "được xác định từ loại thành phần cao nhất trong hệ thống phân cấp NULL < raw < hợp lý < số nguyên < double < complex < ký tự < danh sách < biểu thức."

Vì vậy, nếu bất kỳ đối số nào cho c là tổng quát hơn integer, toàn bộ vectơ sẽ bị ép buộc đến lớp chung hơn.

> class(c(1L, 2L, 3L, 4L)) 
[1] "integer" 
> class(c(1L, 2, 3L, 4L)) # 2 is numeric, so the whole vector is coerced to numeric 
[1] "numeric" 
> class(c(1L, 2, "3L", 4L)) # "3L" is character, so the whole vector is coerced to character 
[1] "character" 

Re: trường hợp seq,

seq(1, 4) giống hệt 1:4 như đã nêu trong ?seq

seq (từ đến) "tạo ra chuỗi từ, từ +/- 1, ..., đến (giống với từ: đến) "

+0

+1, xóa câu trả lời nửa hình thành của tôi. Có thể đáng chú ý vì sao 'c' đang làm việc theo cách ... – mnel

+0

Vì vậy,' số nguyên có giá trị' rõ ràng không có nghĩa là một 'số nguyên'' lớp' cho giá trị 'từ' ... 'lớp (1: 4) 'là từ một' số' đến một 'số' nhưng trả về một số nguyên', bởi vì' 1' có thể được hiểu là một số nguyên', mặc dù nó không phải là chính thức. Điều đó thật khó hiểu. – thelatemail

+0

@thông báo tài liệu chắc chắn có thể rõ ràng hơn. – GSee

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