2012-06-01 14 views
5

Mam dużą ilość danych, gdzie ogranicznik jest ukośnikiem odwrotnym. Przetwarzam go w R i trudno mi jest znaleźć sposób na podzielenie łańcucha, ponieważ odwrotny ukośnik jest metaznakiem. Na przykład, ciąg będzie wyglądać następująco:strsplit w R z metaznakiem

1128\0019\XA5\E2R\366\00=15 

i chcę podzielić ją wzdłuż charakter \, ale kiedy uruchomić polecenie strsplit:

strsplit(tempStr, "\\") 
Error in strsplit(tempStr, "\\") : 
    invalid regular expression '\', reason 'Trailing backslash' 

Kiedy próbuję używany " opcja Fixed”, to nie działa, ponieważ spodziewa się czegoś po backslash:

strsplit(tempStr, "\", fixed = TRUE) 

Niestety, nie mogę przetwórz danych z innego programu, ponieważ dane są gener codziennie.

Odpowiedz

14

Twój wiersz kodu (choć nie powiedzieć to wyraźnie):

strsplit(tempStr, "\\") 

i powinny być

strsplit(tempStr, "\\\\") 

ten zostanie odczytany jako „\\”, której zasadniczy wyrażenie będzie rozumiane jako "\".

+0

niestety to nie działa ... Właśnie odzyskałem ten sam łańcuch. Jakieś inne pomysły? Dzięki. – newRUser

+2

Czy mógłbyś podać samodzielny przykład (to znaczy wprowadzić kod R, abyśmy mogli go uruchomić?) –

+0

Tak, ten sam problem ... kiedy robię \\\\, usuwa wszelkie wystąpienia podwójnego ukośnika, ale \\ otrzyma powyższy błąd, a \\\ próbuje uciec z następującego znaku cudzysłowu ... –

3

Podejrzewam, że twoje dane są w jakimś pliku. W takim przypadku należy użyć wartości read.table, ale jawnie określić ogranicznik. Na przykład, załóżmy, że plik był:

a\b\c\d 
e\f\g\h 

potem przeczytać w R, użyj polecenia:

read.table("file.txt", sep="\\") 
-1

Spróbuj tego:

strsplit(tempStr, "\"")