Niedawno miałem problem, w którym za każdym razem, gdy czytałem plik csv zawierający tabelę z wartościami, R odczytał ją jako format listy zamiast numerycznego. Ponieważ żadna nić nie dostarczyła mi całej odpowiedzi na moją sytuację, kiedy udało mi się ją uruchomić, postanowiłem włączyć do niej skrypt, który zadziałał dla mnie z nadzieją, że komuś się przyda. Oto jest, z pewnym opisem i kilkoma opcjami na wypadek, gdybyś tego potrzebował:Konwertowanie z listy na numeryczne w R
(1) Odczytaj dane z pliku csv. Oto plik nie posiada nagłówka, więc kładę F, jeśli twój posiada nagłówka, a następnie zmienić go T.
data <- read.csv("folder_path/data_file.csv", header=F)
(1.a) Uwaga: Jeśli pojawi się ostrzeżenie, że mówi „niekompletny ostateczna linia znaleziono przez readTableHeader ", oznacza to, że R nie znalazł symbolu końca pliku. Po prostu umieść dodatkową pustą linię na końcu pliku csv, a wiadomość nie pojawi się ponownie.
(2) Można sprawdzić, czy dane są w formacie listy (jeśli jest to numeryczne, to wszystkie są ustawione i wcale nie wymagają tej procedury!) Za pomocą polecenia mode.
mode(data)
(3) Zainicjuj macierz (jako NA), w której chcesz dane w formacie liczbowym, używając wymiarów danych.
dataNum <- matrix(data = NA, nrow = dim(data)[1], ncol = dim(data)[2])
(4) Opcjonalnie: Jeśli chcesz dodać do nazwy kolumn i/lub wierszy, można użyć jednej Jeśli te opcje.
(4a) Dodaj do nazw kolumn i wierszy, przy założeniu, że każdy ma podobne informacje, innymi słowy chcesz nazwy należy col_1, col_2 ... i row_1, row_2 ...
colnames(dataNum) <- colnames(dataNum, do.NULL = F, prefix = "col_")
rownames(dataNum) <- rownames(dataNum, do.NULL = F, prefix = "row_")
(4b) Jeśli chcesz mieć różne nazwy dla każdej kolumny i każdego wiersza, użyj tej opcji i dodaj wszystkie nazwy ręcznie.
colnames(dataNum) <- c("col_name_1", "col_name_2")
rownames(dataNum) <- c("row_name_1", "row_name_2")
(5) Przekształcenie danych z listy na postać numeryczną i umieścić ją w dataNum matrycy.
for (i in 1:dim(data)[2]) {
dataNum[,i] <- c(as.numeric(data[[i]]))
}
(6) Możesz sprawdzić, czy macierz jest w formacie liczbowym za pomocą polecenia mode.
mode(dataNum)
(7) OPCJONALNIE: Jeśli chcesz transponować macierz, możesz skorzystać z poniższej instrukcji.
dataNum <- t(dataNum)
Nie zamieszczaj odpowiedzi w pytaniu.Napisz nasz problem, który chcesz rozwiązać jako pytanie i prześlij odpowiedź jako faktyczną odpowiedź ... – Dason
Myślę, że jest to prawdopodobnie bardziej odpowiednie na Twoim blogu lub podobnym. Jak wskazuje @Dason, nie pasuje to do stylu Q & A na tej stronie. Sprawdź [** faq **] (http://stackoverflow.com/faq), jeśli szukasz szczegółowych informacji, jeśli nie wiesz, jak publikować w witrynie. Dobry wysiłek wymaga jednak niewielkiej edycji, aby zmienić to ustawienie jako pytania i odpowiedzi. –