Recentemente ho avuto un problema in cui ogni volta che leggo un file CSV contenente una tabella con valori, R lo legge come un formato elenco invece che numerico. Poiché nessun thread mi ha fornito l'intera risposta alla mia situazione, una volta che sono riuscito a farlo funzionare ho deciso di includere qui la sceneggiatura che ha funzionato per me nella speranza che sia utile a qualcuno. Eccolo, con qualche descrizione e alcune opzioni nel caso ne abbiate bisogno:Conversione da un elenco a numerico in R
(1) Leggere i dati da un file csv. Ecco il file non ha intestazione, così ho messo F, se il vostro hanno un colpo di testa, poi modificarlo a T.
data <- read.csv("folder_path/data_file.csv", header=F)
(1.a) Nota: Se si riceve un messaggio di avviso che dice "riga finale incompleta trovato di readTableHeader ", ciò significa che R non ha trovato un simbolo di fine file. Basta inserire una riga in più alla fine nel file csv e il messaggio non verrà più visualizzato.
(2) È possibile verificare che i dati siano in formato elenco (se è numerico, quindi sono tutti impostati e non è necessaria questa procedura affatto!) Con il comando modalità.
mode(data)
(3) Inizializza una matrice (come NA) dove si desidera che i dati in formato numerico, utilizzando le dimensioni dei dati.
dataNum <- matrix(data = NA, nrow = dim(data)[1], ncol = dim(data)[2])
(4) Facoltativo: se si desidera aggiungere i nomi alle vostre colonne e/o righe, si potrebbe usare uno se queste opzioni.
(4a) Aggiungere i nomi alle colonne e righe, partendo dal presupposto che ogni hanno informazioni simili, in altre parole, si desidera che i nomi da col_1, col_2, ... e row_1, row_2, ...
colnames(dataNum) <- colnames(dataNum, do.NULL = F, prefix = "col_")
rownames(dataNum) <- rownames(dataNum, do.NULL = F, prefix = "row_")
(4b) Se vuoi nomi diversi per ogni colonna e ogni riga, usa invece questa opzione e aggiungi tutti i nomi a mano.
colnames(dataNum) <- c("col_name_1", "col_name_2")
rownames(dataNum) <- c("row_name_1", "row_name_2")
(5) Trasforma i dati dall'elenco al modulo numerico e li inserisce nei dati della matriceNum.
for (i in 1:dim(data)[2]) {
dataNum[,i] <- c(as.numeric(data[[i]]))
}
(6) È possibile verificare che la matrice sia in formato numerico con il comando di modalità.
mode(dataNum)
(7) OPTIONAL: Nel caso in cui si desidera trasporre la matrice, è possibile utilizzare le seguenti istruzioni.
dataNum <- t(dataNum)
Non includere la risposta nella domanda.Scrivi il problema che volevi risolvere come domanda e invia una risposta come risposta reale ... – Dason
Penso che questo sia probabilmente più appropriato sul tuo blog o simile. Come sottolinea @Dason, questo non si adatta perfettamente allo stile di domande e risposte di questo sito web. Controlla il [** faq **] (http://stackoverflow.com/faq) se sei per i dettagli se non sei sicuro di come pubblicare sul sito. Un buon sforzo, però, richiede solo un piccolo editing per ridefinirlo come un Q & A. –