Mam prostego pliku csv nazwie „test.csv” o następującej treści:jak pominąć czytając niektóre kolumny w readr
colA,colB,colC
1,"x",12
2,"y",34
3,"z",56
Powiedzmy, że chcesz pominąć czytanie w Cola i po prostu czytać w colB i colC. Chcę zrobić to ogólnie, ponieważ mam dużo plików do odczytu, a czasami colA jest nazywane czymś zupełnie innym, ale colB i colC są zawsze takie same.
Zgodnie z dokumentacją read_csv, jednym ze sposobów osiągnięcia tego celu jest zdać nazwie listy dla col_types i tylko nazwa kolumny, które chcesz zachować:
read_csv('test.csv', col_types = list(colB = col_character(), colC = col_numeric()))
By nie wspomnieć Cola powinna zrzucane z wydajność. Jednakże uzyskany ramka danych jest:
Source: local data frame [3 x 3]
colA colB colC
1 1 x 12
2 2 y 34
3 3 z 56
robię coś źle lub jest dokumentacja read_csv nie jest prawidłowy? Zgodnie z plikiem pomocy:
Jeśli lista, musi zawierać jeden "kolektor" dla każdej kolumny. Jeśli chcesz odczytywać tylko podzbiór kolumn, możesz użyć nazwanej listy (gdzie nazwy podają nazwy kolumn). Jeśli kolumna nie jest wymieniona pod nazwą , nie zostanie uwzględniona w danych wyjściowych.
'fread' data.table' zawiera' drop' i Argumenty 'select' w tym celu, dla odniesienia – MichaelChirico
@ jaap, NIE duplikatu. To pytanie dotyczy readr :: read_csv(), a inne pytanie dotyczy utils :: read.table(). – Angelo
@ Angelo Tak to jest. Powiązane pytanie dotyczy odczytu ograniczonej liczby kolumn. W chwili pisania tego pytania, 'readr :: read_csv' nawet nie istniało. W międzyczasie została ona dodana jako odpowiedź (przeze mnie) na alternatywne podejście do 'read.table' /' read.csv' i dlatego może służyć jako duplikat celu. – Jaap