2015-03-27 3 views
7

voglio usare cast per un data.table con la formula con il nome di colonne come stringaCome utilizzare dcast.data.table con la formula come stringa

Il mio tavolo:

c1 c2 c3 
1  A  1 
1  B  2 
1  C  3 
2  A1 1 
2  B1 2 
2  C1 3 

voglio hanno risultato:

c1 1 2 3 
1  A B C 
2  A1 B1 C1 

ho potuto farlo con il comando

dcast.data.table(dt, c1 ~ c3, value.var = "c2")

Ma voglio eseguire dcast in una funzione che ha param di nome colonna c1 come stringa. Per esempio

f1 <- function(d, col_name1, col_name2, col_name3) { 
    dcast.data.table(d, col_name1 ~ col_name3, value.var = col_name2) 
} 

Quindi io chiamerei

f1(dt, "c1", "c2", "c3") 

La speranza qualcuno può aiutare!

+1

Che cosa è successo a 'C1'? – zx8754

+0

@ zx8754 Ci scusiamo per la domanda sbagliata a causa della mia errata presentazione. Ho modificato la mia domanda quindi rimuovi -1. Grazie! –

+0

Non ho votato. – zx8754

risposta

7

dcast accetta anche la formula come stringa.

f1 <- function(d, col_name1, col_name2, col_name3) { 
    dcast.data.table(d, paste(col_name1, "~", col_name3), value.var = col_name2) 
} 

f1(dt, "c1", "c2", "c3") 
# c1 1 2 3 
# 1: 1 A B C 
# 2: 2 A1 B1 C1 

Si noti che non c'è bisogno di caricare reshape2 e si può anche utilizzare direttamente solo dcast invece di dcast.data.table da versioni 1.9.5+