Tôi đang cố gắng viết một hàm tùy chỉnh sẽ tính toán biến mới dựa trên các giá trị từ một biến số được xác định trước (vd: vector_heavy) và sau đó đặt tên biến mới dựa trên một đối số được cung cấp cho hàm (ví dụ: custom_name).Đặt tên cho một biến mới dựa trên độ sáng
Việc đặt tên biến này là nơi kỹ năng của tôi bị thất bại. Bất kỳ trợ giúp nào cũng được đánh giá rất cao.
library(tidyverse)
vector_heavy <- quos(disp, wt, cyl)
cv_compute <- function(data, cv_name, cv_vector){
cv_name <- enquo(cv_name)
data %>%
rowwise() %>%
mutate(!!cv_name = mean(c(!!!cv_vector), na.rm = TRUE)) %>%
ungroup()
}
d <- cv_compute(mtcars, cv_name = custom_name, cv_vector = vector_heavy)
thông báo lỗi của tôi đọc:
Error: unexpected '=' in:
" rowwise() %>%
mutate(!!cv_name ="
Loại bỏ các !!
trước cv_name
trong mutate()
sẽ dẫn đến một hàm tính toán biến mới theo nghĩa đen tên cv_name
, và bỏ qua những custom_name
Tôi đã bao gồm như một tranh luận.
cv_compute <- function(data, cv_name, cv_vector){
cv_name <- enquo(cv_name)
data %>%
rowwise() %>%
mutate(cv_name = mean(c(!!!cv_vector), na.rm = TRUE)) %>%
ungroup()
}
Làm thế nào tôi có thể nhận được chức năng này để sử dụng các custom_name
tôi cung cấp như một cuộc tranh cãi cho cv_name
?
giải pháp đẹp cảm ơn bạn! – Joe