2013-09-21 52 views
35

Giả sử tôi có một véc tơ v, làm thế nào để tôi đảo ngược, tức là phần tử cuối cùng trước tiên?Làm thế nào để đảo ngược thứ tự một véc tơ?

Việc đầu tiên mà đến với tôi là v[length(v):1], nhưng nó sẽ trả về NA khi vnumeric(0), trong khi sử dụng bình thường mong đợi sắp xếp không có gì trả về không có gì, không sắp xếp gì trả về điều không có sẵn - nó làm cho một sự khác biệt lớn trong trường hợp của tôi.

Trả lời

56

Bạn đang ở gần đó, rev làm những gì bạn cần:

rev.default 
# function (x) 
# if (length(x)) x[length(x):1L] else x 
# <bytecode: 0x0b5c6184> 
# <environment: namespace:base> 

rev(1:3) 
# [1] 3 2 1 
rev(numeric(0)) 
# numeric(0) 
+3

+1 - chỉ để giải thích những gì đang xảy ra với OP trong trường hợp 'v <- c() ':' chiều dài (v): 1' là '0: 1'. Toán tử '[' bỏ qua '0' và trả về' v [1] ', tức là' NA'. Nếu nó không phải cho 'rev', cái gì đó mạnh mẽ và dọc theo các dòng của OP sẽ là' v [seq (to = 1, by = -1, length.out = length (v))] '. – flodel

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