Ho esaminato le esercitazioni e la documentazione, ma non ho capito come assegnare un vettore di valori per tutte le colonne a una riga esistente in un data.table
.Assegnare un vettore a una specifica riga di tabella di dati esistente in R
parto da un vuoto data.table
che ha già il numero corretto di colonne e righe:
dt <- data.table(matrix(nrow=10, ncol=5))
Ora calcolare alcuni valori per una fila di fuori del data.table
e metterli in un vettore vec
, e. g .:
vec <- rnorm(5)
Come è possibile assegnare i valori di vec a e. g. la prima riga di data.table
mentre si ottiene una buona prestazione (visto che voglio anche riempire le altre righe passo dopo passo)?
Dal momento che si sta utilizzando 'data.table' per la ragione delle prestazioni (come indicato in commento ad una risposta qui sotto) Credo che l'aggiunta di nuovo (molti) le righe e ancora una volta è ** non ** efficiente a tutti dato che il' data.table' (come 'data.frame') è column store, non un row store (il che significa che ogni volta che si aggiunge una riga, è necessario accedere a posizioni diverse nella memoria). Qual è la ragione (algoritmo) che richiede l'aggiunta di righe? –
Sto creando una tabella vuota molto grande (11 mila righe x 8 mila colonne) e sto facendo alcuni calcoli per creare un vettore che poi uso per riempire questa tabella riga per riga. Pensavo che l'uso di data.table potesse renderlo più veloce rispetto a quando avessi usato una matrice o un dataframe. – Pascal
OK, penso che 'data.table' sia più veloce utilizzandolo in questo modo poiché si prealloca la memoria richiesta (dimensione della tabella) e si sovrascrivono le righe per riferimento (se si utilizza la risposta di Richard con l'operatore': = ') poiché questo la soluzione NON copia l'intero dato solo perché si modifica un valore. Posso modificare la tua domanda per chiarire il caso d'uso esatto? –