2011-09-05 12 views
12

Powiel możliwe:
Pass a data.frame column name to a functionFunkcja w R, przekazując dataframe i nazwę kolumny

Próbuję utworzyć funkcję w R gdzie pomiędzy wejściami istnieje dataframe oraz Nazwa kolumny. Kod byłoby coś takiego:

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

wyjściowa:

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

Myślę, że problemem jest to, że input_table$column_name nie jest rozpoznawany. input_table jest churn_3, ale input_table$column_name zwraca column_name not found.

Czy jest to możliwe, aby nie używać pakietów pass-by-reference lub środowisk przekazywania jako zmiennych?

+0

@Kevin Dobre miejsce. Głosowanie w celu zamknięcia. – Andrie

+0

Tylko dlatego, że miałem to samo pytanie ... – kmm

+5

Nie trzeba ignorować duplikatu, szczególnie nie dla nowego użytkownika. –

Odpowiedz

15

można pośrednio odwoływać się do kolumny w data.frame za pomocą nawias kwadratowy indeksowania:

dane próbki:

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

funkcyjne:

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

Wyniki:

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

Dzięki za milion. Pracowałem dokładnie tak, jak chciałem, używając zarówno numerów kolumn, jak i nazw kolumn. – jpsfer

Powiązane problemy