nadzieję, że ktoś może mi pomóc zrozumieć, dlaczego błędny \ n znaków są wyświetlane w wektorze ciągów, który tworzę w R.Dlaczego i gdzie n znaki nowej linii są wprowadzane do c()?
próby importowania i oczyścić bardzo szeroki plik danych, który znajduje się w ustalonym formacie szerokość (http://www.state.nj.us/education/schools/achievement/2012/njask6/, "Plik tekstowy dla przebiegów danych"). Zastosowano UCLA tutorial w przypadku używania znakomitego pytania SO o nazwie read.fwf i this, aby podać nazwy kolumn po zaimportowaniu.
Ponieważ plik jest naprawdę szeroki, nagłówki kolumn są długie - wszystkie razem, nieco poniżej 29 800 znaków. Jestem przekazując je w jak prosty wektorze ciągów:
column_names <- c(...)
będę oszczędzić brzydkie zrzut tutaj, ale rzuciłem całą rzecz na pastebin.
Czyściłem i przekształcałem niektóre zmienne do analizy, gdy zauważyłem, że niektóre z moich podzestawów zwracały 0 wierszy. Po zastanowieniu się nad tym (czy coś źle napisałem?) Zdałem sobie sprawę, że jakoś grupa "\ n" znaków nowej linii została wprowadzona do nagłówków kolumn.
Gdybym pętla nad COLUMN_NAMES wektorem, który został utworzony
for (i in 1:length(column_names)) {
print(column_names[i])
}
widzę pierwszy znak nowej linii w środku 81. kolejce -
SPECIAL \ nEDUCATION SCIENCE Liczba uczestniczących Nauki
Aleje, które próbowałem rozwiązać:
1) Czy jest to coś w moim środowisku? Używam zwykłego edytora skryptów w R i zawijam linie do - ale przerwy na moim ekranie nie pasują do położenia znaków \ n, co sugeruje mi, że nie jest to edytor skryptów R.
2) Czy jest ustawienie GUI? Czy niektóre searching, ale nie można znaleźć niczego.
3) Czy istnieje wzór? Wygląda na to, że znaki nowej linii są wstawiane na około 4000 znaków. Czy trochę czytania na temat prymitywów R/S, aby spróbować dowiedzieć się, czy to ma coś wspólnego z podstawowymi strukturami danych R, ale było dość szybko w mojej głowie.
Próbowałem podzielić długi ciąg na shorter chunks, a następnie połączyć je i to wydawało się rozwiązać problem.
column_names.1 <- c(...)
column_names.2 <- c(...)
column_names_combined <- c(column_names.1, column_names.2)
więc mam natychmiastowe obejście, ale chciałbym wiedzieć, co się tutaj dzieje.
Niektóre posts, że miał do czynienia z problemami z wektorami znaków zasugerował, że biegnę profil pamięci:
memory.profile()
NULL symbol pairlist closure environment promise
1 9572 220717 4734 1379 5764
language special builtin char logical integer
63932 165 1550 18935 10302 30428
double complex character ... any list
2039 1 60058 0 0 20059
expression bytecode externalptr weakref raw S4
1 16553 725 150 151 1162
biegnę R 2.15.1 (64-bit) R na Windows 7 (Enterprise , SP 1, 8 gigabajtów RAM). Dzięki!
W jaki sposób wykonujecie kod w pastebin? Czy kopiujesz i wklejasz? Lub pozyskać go z pliku? Lub w inny sposób? – hadley
Nowy skrypt, a następnie kopiowanie i wklejanie, tak. Nie pochodzi z pliku. – Andrew
To jest błąd kopiowania i wklejania w (myślę) R (lub być może klienta R, którego używasz) - po prostu pobierz go z pliku. – hadley