2011-09-05 32 views
12

thể trùng lặp:
Pass a data.frame column name to a functionChức năng trong R, đi qua một dataframe và một tên cột

tôi đang cố gắng để tạo ra một hàm trong R nơi giữa đầu vào có dataframe và một tên cột dọc. Mã này sẽ là một cái gì đó như thế này:

DT_CAP_COLUMN <- function(input_table,output_table,column_name, 
          cap_function,Parameter){ 
    input_table$column_name 
    (...) 
    return(1) 
} 

Output:

DT_CAP_COLUMN(churn_3,churn_4,'VOICE_REVENUE','STD',3) 
input_table$column_name is NA 

Tôi nghĩ vấn đề là input_table$column_name không được công nhận. input_tablechurn_3 nhưng input_table$column_name trả lại column_name not found.

Có cách nào để thực hiện việc này mà không phải sử dụng các gói tham chiếu chuyển tiếp hoặc chuyển môi trường làm biến không?

+0

@Kevin Vị trí tốt. Bỏ phiếu để đóng. – Andrie

+0

Chỉ vì tôi có cùng một câu hỏi ... – kmm

+5

Không cần phải giảm bớt một số tiền, đặc biệt là không cho người dùng mới. –

Trả lời

15

Bạn gián tiếp có thể tham khảo một cột trong một data.frame bằng cách sử dụng hình vuông khung lập chỉ mục:

dữ liệu mẫu:

dat <- data.frame(
    a = letters[1:3], 
    b = LETTERS[4:6], 
    c = 7:9 
) 

Chức năng:

my.function <- function(data, col){ 
    data[, col] 
} 

Kết quả:

> my.function(dat, "b") 
    b 
1 D 
2 E 
3 F 
> my.function(dat, "c") 
    c 
1 7 
2 8 
3 9 
+0

Cảm ơn một triệu. Làm việc chính xác như tôi muốn sử dụng cả số cột và tên cột. – jpsfer

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