Sto usando R per analizzare alcuni log del server che producono liste che assomigliano a questo:Un modo più veloce di trasformare il vettore di testo in matrice numerica/data.frame in R?
myLog <- c("[1,2,3]","[4,5,6]","[7,8,9]")
Quello che voglio produrre da loro è una matrice che assomiglia a questo:
myMatrix <- matrix(c(c(1,2,3),c(4,5,6),c(7,8,9)),nrow=3,byrow=T)
Provengono dall'interrogare un campo di database di tipo varchar, quindi non penso di poter usare trucchi per la lettura di file.
Tendo ad avere un sacco di questi, milioni di righe alla volta.
Quello che ho fatto è il seguente, è piuttosto lento:
splitDat <- sapply(inputVector,function(y){
y1 <- gsub("\\[","",y)
y2 <- gsub("\\]","",y1)
y3 <- strsplit(y2,split=", ")
y4 <- unlist(y3)
})
C'è un modo più efficiente? Un regex one-liner?
fa il seguente lo rende migliore di 'matrix (as.numeric (unlist (sapply (myLog, function (x) strsplit (gsub (" \\] | \\ ["," ", x),", ")))), nrow = 3, byrow = TRUE) '? –