2017-02-15 8 views
2

У меня есть список строк, как это, и я хочу, чтобы получить все имена брендов:Список

s = c("FERRARI - 612 SCAGLIETTI" ,"PORSCHE - 918", "ASTON MARTIN - DBS") 
    tt= strsplit(s," -") 

но здесь tt список списков. Как можно отрезать этот tt? Я попытался

tt[[1:length(tt)]][1] 

но получил эту ошибку:

Error in tt[[1:length(tt)]] : recursive indexing failed at level 2. 

Любое предложение?

ответ

1

Мы можем использовать sub, чтобы соответствовать нулю или больше места (\\s*), за которым следует - следуют другие символы и заменить его на пустой ("")

sub("\\s*-.*", "", s) 
#[1] "FERRARI"  "PORSCHE"  "ASTON MARTIN" 

Что касается «ТТ», это является list, поэтому мы можем цикл через list с lapply/sapply/vapply и т.д., и получить первый элемент

sapply(tt, head, 1) 
#[1] "FERRARI"  "PORSCHE"  "ASTON MARTIN" 
+1

Это умный. Спасибо. – newleaf