2014-12-22 4 views
1

У меня есть следующее выражение строки, к которой я применяю strsplit:Разработка выхода strsplit в R

x="Hello I am using stack overflow to ask this question." 
y=strsplit(x,"a") 

выше функция разделит й, когда все есть «а». В моем понимании, возвращаемый вектор должен быть список, и так сказать, что я хотел, чтобы получить второй фрагмент х, я должен использовать:

y[[2]] 

Однако, это дает мне ошибку:

Error in y[[2]] : subscript out of bounds 

Я не уверен, как это решить. Все, что я хочу, - это доступ к сломанным фрагментам строки.

ответ

8

strsplit действительно возвращает список. Но list - это только один список элементов.

length(strsplit(x,'a')) 
#[1] 1 

Для доступа, второй string из одного списка элементов,

strsplit(x,"a")[[1]][2] 
#[1] "m using st" 

Предположим, если у вас есть вектор элементов

a1 <- rep(x,3) 

strsplit возвращает список с числом элементы, равные длине a1

lst <- strsplit(a1,'a') 

Чтобы получить 2nd раздвоение строку из lst

sapply(lst,`[`,2) 
#[1] "m using st" "m using st" "m using st" 
+2

Или вы можете просто сделать 'LST <-unlist (strsplit (a1, 'а'))' :-) –