2012-12-13 87 views
5

Tôi có ma trận và tôi muốn thay đổi loại cột thứ năm từ ký tự thành số nhưng tôi không thể. Tôi đã thử điều này:Cách thay đổi loại cột ma trận trong R

test1[,5] <- as.numeric(test1[,5]) 

nhưng một lần nữa, lớp cột là ký tự không phải là số. Tôi nên làm gì? Cảm ơn bạn

+5

Bạn chỉ có thể có một kiểu dữ liệu trong ma trận. – Marius

+0

@Marius Thực ra tôi cần phải đặt ma trận dựa trên cột này nhưng tôi cần phải đặt hàng dựa trên dạng xem số không mang tính đặc trưng. Là có một cách? – hora

+3

Thử 'test1 [order (as.numeric (test1 [, 5])),]'. – flodel

Trả lời

6

Giống như @Marius cho biết, ma trận chỉ có thể chứa một loại dữ liệu. Bạn có thể chuyển đổi ma trận của bạn thành một data.frame vì data.frames có thể chứa một kiểu dữ liệu khác nhau cho mỗi cột của chúng. Các chức năng chuyển đổi từ và quay trở lại là as.data.frameas.matrix. Sau đó, bạn sẽ có thể áp dụng mã chuyển đổi cột mà bạn đã đăng lên data.frame.

Tuy nhiên, bạn đã đề cập trong nhận xét rằng mục tiêu cuối cùng của bạn là sắp xếp lại ma trận dựa trên các giá trị của cột bị ép buộc. Bạn không cần phải ép buộc cột tại chỗ trước khi sắp xếp lại ma trận, bạn có thể thực hiện tất cả những điều đó khi đang bay với:

test1[order(as.numeric(test1[, 5])), ] 
Các vấn đề liên quan