2013-06-19 1 views
2

У меня есть вектор, как показано нижеудаления все после первого «обратной косой черты» в строке

vec <- c("abc\edw\www", "nmn\ggg", "rer\qqq\fdf"......) 

Я хочу, чтобы удалить все после, как только первый слэш встречается, как ниже

newvec <- c("abc","nmn","rer") 

Thank вы.

Мой первоначальный вектор, как показано ниже (только голова)

[1] "peoria ave\nste \npeoria"      [2] "wood dr\nphoenix"         
"central ave\nphoenix"        
[4] "southern ave\nphoenix"       [5] "happy valley rd\nste 
\nglendaleaz "    "the americana at brand\n americana way\nglendale" 

Здесь проблема заключается в мой оригинальный CSV-файл не содержит обратную косую черту, но когда я прочитал его обратную косую черту появляются. Исходный файл CSV, как показано ниже

[1] "peoria ave    [2] "wood dr 
    nste       nphoenix"  
    npeoria" 

Как вы можете видеть, на самом деле они разделены «ENTER», но когда я прочитал его в R с помощью read.csv() они заменяются на обратной косой черты.

+1

Вы должны изменить строку, чтобы показать, как на самом деле представлены в 'r' (т.е. спасся обратной косой черты' '\\ '') –

+0

Код, который вы указали, не может быть воспроизведен в R. Кроме того, вы говорите о косе и можете использовать обратную косую черту? если вы хотите добавить обратную косую черту, следует удвоить их. например 'vec <- c (" abc \\ edw \\ www ")' –

+0

@SanderVanderZeeuw Я предоставил дополнительную информацию, пожалуйста, просмотрите ее. Я думаю, что обратная косая черта на самом деле не существует. Они появляются, когда я читаю их в R. –

ответ

4

другое решение:

sub("\\\\.*", "", x) 
+0

+1 простой и элегантный и точно то, что требуется. Ницца. –

1
vec <- c("abc\\edw\\www", "nmn\\ggg", "rer\\qqq\\fdf") 
sub("([^\\\\])\\\\.*","\\1", vec) 
[1] "abc" "nmn" "rer" 
0

strssplit(vec, "\\\\") должен выполнить эту работу.

, чтобы выбрать первый элемент [[1]][1] 2-й [[1]][2]