2016-08-24 17 views
5

Tôi đang cố chuyển tên cột thành một hàm theo chương trình để chúng có thể được chọn trong dplyr. Tên cột sẽ khác nhau vì vậy tôi đã cố gắng sử dụng phiên bản đánh giá tiêu chuẩn của chức năng chọn select_. Bản thân các tên cột hơi buồn cười vì chúng chứa các ký tự +-, mà tôi nghĩ là gây ra sự cố. Dưới đây là một ví dụ đơn giản sao chép lỗi.cách chuyển tên cột trong dplyr mà không cần đánh giá

library(tibble) 
library(dplyr) 
data <- data_frame(target_id = 'xyz', 
        `CH4+Sulfate-1` = 1.2, 
        `CH4+Sulfate-2` = 2, 
        `CH4+Sulfate-3` = 3) 
columns <- c('CH4+Sulfate-1', 'CH4+Sulfate-2', 'CH4+Sulfate-3') 
select_(data, .dots = columns) 

tôi nhận được lỗi sau

Error in eval(expr, envir, enclos) : object 'CH4' not found 

Dẫn tôi tin rằng những cái tên đang được đánh giá chứ không phải là thực hiện như là chuỗi. Làm thế nào tôi có thể nhận được xung quanh vấn đề này mà không cần phải đổi tên các cột của bảng?

+1

Hmmm .... câu hỏi hay - 'dữ liệu [cột]' từ cơ sở R hoạt động tốt sao cho nó không phải là vấn đề phổ quát. Bạn cũng có thể hack xung quanh nó với 'dplyr :: select (dữ liệu, kết hợp (cột, tên (dữ liệu)))' nhưng tôi không có ý tưởng khác. – thelatemail

+2

Một ví dụ hoàn toàn tối thiểu là đủ để phá vỡ nó - 'dat <- data.frame (\' A + B \ '= 1: 3, check.names = FALSE); select_ (dat, "A + B") ' – thelatemail

+0

Có vẻ như' one_of' với 'select' có thể là câu trả lời trong [loại tình huống] này (http://stackoverflow.com/questions/35839408/r-dplyr- drop-multiple-columns/35839679 # 35839679): 'select (dữ liệu, one_of (cột))' – aosmith

Trả lời

2

Bao bọc các tên trong backticks thực hiện công việc.

columns <- c('`CH4+Sulfate-1`', '`CH4+Sulfate-2`', '`CH4+Sulfate-3`') 
Các vấn đề liên quan