2015-05-31 16 views
24

Dưới đây là một ví dụ về khung dữ liệu rất đơn giản mà tôi tìm thấy trên internet. Chạy này trong RStudio trên máy tính của tôi hóa ra một thông báo lỗi:Thông báo lỗi khi chạy chức năng 'đổi tên' đơn giản trong R

Error: All arguments to rename must be named.

Chức năng rename có vẻ là thẳng về phía trước nhưng không làm việc cho một số lý do và tôi không thể tìm ra lý do tại sao.

library("dplyr") 

d <- data.frame(alpha=1:3, beta=4:6, gamma=7:9) 
d 
# alpha beta gamma 
# 1  1 4  7 
# 2  2 5  8 
# 3  3 6  9 

rename(d, c("beta"="two", "gamma"="three")) 

#Error: All arguments to rename must be named. 
+10

tôi nhận được thông báo lỗi này khi tôi có cả hai 'plyr' và' dplyr' nạp và cố gắng sử dụng 'đổi tên() 'lệnh. Tôi bỏ qua điều này bằng cách sử dụng 'plyr :: rename()' – coip

Trả lời

16

Bạn phải sử dụng tên chưa được đặt tên cho tên cột hiện tại cũng như tên mới. Ngoài ra, lưu ý rằng tên mới xuất hiện ở phía bên tay trái.

Hãy thử điều này:

rename(d, two = beta, three = gamma) 

    alpha two three 
1  1 4  7 
2  2 5  8 
3  3 6  9 
+0

Đối với những người đến sau, phần ** unquoted ** chỉ đúng khi bạn đặt tên mới ở bên trái và tên cũ ở bên phải '=', điều ngược lại của tài liệu trợ giúp trong '? rename'. –

39

Mike, lệnh của bạn là hợp lệ nhưng đối với gói "plyr". Nếu bạn tải "dplyr" trong cùng một tập lệnh, bạn sẽ nhận được lỗi mà bạn đã đề cập.

Do đó, hãy thử này để thay thế:

library("plyr") 
d <- data.frame(alpha=1:3, beta=4:6, gamma=7:9) 
plyr::rename(d, c("beta"="two", "gamma"="three")) 

Lưu ý rằng sessionInfo() giúp giữ một ca khúc của những gì gói được nạp (đính kèm).

+4

Câu trả lời này phải được chấp nhận là chính xác. –

2

Tôi cũng gặp lỗi này khi cố gắng sử dụng rename_all trên nhóm dữ liệu được nhóm.

ví dụ:

as_tibble(mtcars) %>% group_by(cyl) %>% rename_all(toupper) 

sẽ tạo ra các lỗi như đã nêu bởi OP.

Để giải quyết, sử dụng ungroup()

as_tibble(mtcars) %>% group_by(cyl) %>% ungroup() %>% rename_all(toupper) 
+0

Điều này không giống như vấn đề của OP, nhưng nó là của tôi. Cảm ơn. – quartin

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