Các ba hàng đầu đánh giá câu trả lời có một điểm yếu.
Nếu khung dữ liệu của bạn trông như thế này
df <- data.frame(Time=c(1,2), In=c(2,3), Out=c(3,4), Files=c(4,5))
> df
Time In Out Files
1 1 2 3 4
2 2 3 4 5
Sau đó, nó là một giải pháp kém để sử dụng
> df2[,c(1,3,2,4)]
Nó thực hiện công việc, nhưng bạn vừa giới thiệu một sự phụ thuộc vào thứ tự của các cột trong đầu vào của bạn.
Phong cách lập trình dễ vỡ này là phải tránh.
Việc đặt tên rõ ràng của các cột là một giải pháp tốt hơn
data[,c("Time", "Out", "In", "Files")]
Ngoài ra, nếu bạn có ý định sử dụng lại mã của mình trong một cài đặt chung hơn, bạn có thể chỉ cần
out.column.name <- "Out"
in.column.name <- "In"
data[,c("Time", out.column.name, in.column.name, "Files")]
Điều này cũng khá hay vì nó hoàn toàn cách ly chữ. Ngược lại, nếu bạn sử dụng dplyr'sselect
data <- data %>% select(Time, out, In, Files)
sau đó bạn sẽ thiết lập những người sẽ đọc mã của bạn sau này, bao gồm cả bản thân bạn, cho một chút lừa dối. Các tên cột đang được sử dụng như chữ mà không xuất hiện trong mã như vậy.
help(Extract)
còn được gọi là?'['