Conversion d'une liste en numérique en R

J'ai récemment eu un problème dans lequel à chaque fois que je lis un fichier csv contenant un tableau avec les valeurs, les R lire un format de liste à la place de numérique. Comme aucun fil ne m'a fourni l'ensemble de la réponse pour ma situation, une fois que j'ai été capable de le faire fonctionner, j'ai décidé de l'inclure ici le script qui a fonctionné pour moi dans l'espoir qu'il est utile à quelqu'un. Ici, il est, avec une description et quelques options dans le cas où vous en avez besoin:

(1) Lire les données à partir d'un fichier csv. Ici, le fichier n'a pas d'en-tête, donc j'ai mis F, si la vôtre en avoir un en-tête, puis le modifier à T.

data <- read.csv("folder_path/data_file.csv", header=F)

(1.a) Remarque: Si vous obtenez un avertissement qui dit "incomplet dernière ligne trouvée par readTableHeader", ce qui signifie que R n'a pas trouver de fin-de-fichier de symbole. Il suffit de mettre une ligne vide supplémentaire à la fin du fichier csv et le message ne s'affichera de nouveau.

(2) Vous pouvez vérifier que les données sont sous forme de liste (si elle est numérique, vous êtes tous ensemble et n'ont pas besoin de cette procédure à tous!) avec le mode de commande.

mode(data)

(3) Initialiser une matrice (NA) où vous voulez que les données dans un format numérique, en utilisant les dimensions de données.

dataNum <- matrix(data = NA, nrow = dim(data)[1], ncol = dim(data)[2])

(4) FACULTATIF: Si vous souhaitez ajouter des noms aux colonnes et/ou lignes, vous pouvez utiliser l'une de ces options.

(4a) Ajouter les noms de colonnes et de lignes, en supposant que chaque avez des informations similaires, dans d'autres termes, vous voulez les noms à col_1, col_2, ... et row_1, row_2, ...

colnames(dataNum) <- colnames(dataNum, do.NULL = F, prefix = "col_")
rownames(dataNum) <- rownames(dataNum, do.NULL = F, prefix = "row_")

(4b) Si vous voulez des noms différents pour chaque colonne et de chaque ligne, puis utiliser cette option au lieu et ajoutez tous les noms par la main.

colnames(dataNum) <- c("col_name_1", "col_name_2")
rownames(dataNum) <- c("row_name_1", "row_name_2")

(5) Transformer les données de la liste sous forme numérique et de le mettre dans la matrice dataNum.

for (i in 1:dim(data)[2]) {
    dataNum[,i] <- c(as.numeric(data[[i]]))
}

(6) Vous pouvez vérifier que la matrice est au format numérique avec la commande mode.

mode(dataNum)

(7) FACULTATIF: Dans le cas où vous souhaitez transposer la matrice, vous pouvez utiliser l'instruction suivante.

dataNum <- t(dataNum)

source d'informationauteur Edgardo Ortiz