2011-09-05 7 views
12

Eventuali duplicati:
Pass a data.frame column name to a functionfunzione in R, passando un dataframe e un nome di colonna

Sto cercando di creare una funzione di R, dove tra gli ingressi c'è dataframe e un nome della colonna. Il codice potrebbe essere qualcosa di simile:

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

uscita:

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

Credo che il problema è che input_table$column_name non viene riconosciuto. input_table è churn_3 ma input_table$column_name restituisce column_name not found.

Esiste comunque la possibilità di farlo senza dover utilizzare pacchetti pass-by-reference o ambienti di passaggio come variabili?

+0

@Kevin Buon posto. Voto per chiudere. – Andrie

+0

Solo perché ho avuto la stessa domanda ... – kmm

+5

Non c'è bisogno di downvotare un dupe, soprattutto non per un nuovo utente. –

risposta

15

È possibile indirettamente riferimento a una colonna in una data.frame utilizzando piazza staffa di indicizzazione:

dati del campione:

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

funzione:

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

Risultati:

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

Grazie mille. Ha funzionato esattamente come volevo usando sia i numeri delle colonne che i nomi delle colonne. – jpsfer

Problemi correlati