2012-11-05 7 views
6

Jest to podobne doi https://stackoverflow.com/questions/12425599/duplicated-row-names, ale nie widzę odpowiedzi, które mogą pomóc.Duplikat tabeli odczytów błędów "row.names". row.names = NULL przesuwa kolumny

Problem: Próba odczytu w pliku, który zawiera zduplikowane liczby w pierwszej kolumnie, ale przesuwa nagłówki kolumn, gdy row.names = NULL.

Próbuję odczytać następujący plik do R

TripId VID TspVID VWT VCLS Week 

201110041426 2226 33889 1 0 41 

201110041501 2226 33889 1 0 41 

201110041510 2226 33889 1 0 41 

201110041557 2226 33889 1 0 41 

(jest to mały fragment z programu Excel do pliku CSV z wielu tysięcy wierszy i kolumn ~ 200. Istnieje taka sama liczba wpisy w pierwszym rzędzie, jak we wszystkich innych. Istnieje duplikaty w pierwszym rzędzie. kolumny nie pokrywają się z etykietami w tym widoku, ale robią w przestrzeni CSV.)

komenda

> lm.table <- read.table(file= file.in, sep=",", header=TRUE) 
Error in read.table(file = file.in, sep = ",", header = TRUE) : 
    duplicate 'row.names' are not allowed 

nie działa. Użycie pierwszej kolumny dla row.names oznacza, że ​​pierwszy wiersz ma mniej wartości niż pozostałe, co nie jest prawdą. Z pewnością nie chcę pierwszej kolumny jako row.names.

próbuję ustawić row.names = NULL

> lm.table <- read.table(file= file.in, sep=",", header=TRUE, row.names=NULL) 

który działa, ale kolumny zostały przesunięte

> head(lm.table) 

    row.names TripId VID TspVID VWT VCLS  Week  Date TimeStart TimeEnd  Lat1 

1 201110010006 2226 33889  1 0 40 2011/09/30 17:06:37 17:25:16 47.5168 -122.209 

2 201110010028 2226 33889  1 0 40 2011/09/30 17:28:45 17:43:14 47.5517 -122.058 

3 201110010000 2231 45781  1 0 40 2011/09/30 17:00:00 18:02:30 32.9010 -117.193 

4 201110011407 2231 45781  1 0 40 2011/10/01 07:07:57 07:48:17 32.7044 -117.004 

Zauważ, że nowa nazwa kolumna „row.names został wprowadzony i cały rząd przesunięty w prawo:

Oto końcowy koniec wyniku> head (lm.table), który przesunął etykiety kolumn na niezdefiniowaną kolumnę (myślę, że to również pokazuje liczbę kolumn Etykiety = liczba kolumn, która jest również prawdą z inspekcji.)

 FVavR FVstdR FIdlR 

1 3.959140  2 NA 

2 5.285770  20 NA 

3 4.274140  26 NA 

Każdy pomysł, dlaczego pojawia się przesunięcie w kolumnach a jak nie zmieniać i mają row.names prostu rosnąco numery?

+0

Jakieś dziwne znaki w nazwach pól? Czy próbowałeś 'read.csv' zamiast' read.table'? To zapisuje określenie 'sep' i' header' oraz ustawia 'fill = TRUE' (Chociaż mówisz, że wszystkie wiersze mają taką samą liczbę wpisów). – seancarmody

Odpowiedz

0

Użyłem poniższy kod:

lm.table <- read.table("file name", header=TRUE, row.names=NULL) 

Ta dodatkowa kolumna z lewej strony z ponumerowanymi nazwami wierszy, ale nie mogę znaleźć, że nazwy kolumn zostały przesunięte. Czy to możliwe, że twoje nazwy kolumn nadal pasują do właściwych kolumn, ale wynik R sprawiał, że wyglądało na to, że nazwy zmieniły się?

+0

Kolumny są zdecydowanie przesunięte. Jak już wspomniałem, istnieje przecinek końcowy. Dlaczego powoduje to, że nagłówek "row.names" przejmuje istniejącą kolumnę danych i przenosi pozostałe, wciąż jest dla mnie tajemnicą. –

5

miał ten sam problem. Właśnie dodałem tę linię:

colnames(rec) <- c(colnames(rec)[-1],"x") 
rec$x <- NULL 
+1

Myślę, że można skondensować to do jednej linii jako 'colnames (rec) <- c (colnames (rec) [- 1], NULL)' – Cole

0

Miałem ten sam problem. Połączyłem datę z sygnaturami czasowymi i teraz mogę czytać z pliku CSV.

Możesz wygenerować numer wiersza jako pierwszą kolumnę (np. Używając pythona) w pliku CSV, a następnie przeczytać go ponownie.

0

Mój problem jest związany z separatora pól rozdzielany tabulatorami pliku:

Jeśli nie określić separator pól:

> condensed <- read.table("condense_report.tab", header=T) 
Error in read.table("condense_report.tab", header = T) : 
duplicate 'row.names' are not allowed 

Jeśli dodać SEP = TAB

condensed <- read.table("condense_report.tab", header=TRUE, sep="\t") 

Następnie nie ma komunikatu o błędzie.

Oto zawartość mojego pliku w (^ I to znak TAB, i $ jest koniec kreska):

Próbka^Imethod^Ispecies^Imean_frac^Istd_frac^Imean_dep^Imean_clsz^Inumrep $ asterix_potion^Imothur^IEnterococcus faecalis^I0.32290000^I0.021755985650701942^I3293.5000^^ I3309.7500 I4 $ asterix_potion^Imothur^IAcinetobacter baumannii^I0.28010000^I0.021539851624928375^I2869.5000^^ I2880.7500 I4 $

Problem dotyczy kolumny z gatunkami. Ma spacje, a R domyślnie używa spacji i tabulacji jako ograniczników. Więc masz dodatkową kolumnę niż nagłówek zgodnie z R, jeśli nie podano opcji sep. To jest źródłem problemu.

Powiązane problemy