Я пытаюсь извлечь и вставить элементы списка списков, сгенерированных с помощью strsplit. Например:Извлечь и вставить несколько элементов из списка списков, сгенерированных strsplit
cat<-c("X0831_d8_f1_2s_wt_8_ROI_009", "X0831_d8_f1_2s_wt_8_ROI_008",
"X0831_d8_f1_2s_wt_8_ROI_007", "X0831_d8_f1_2s_wt_8_ROI_006",
"X0831_d8_f1_2s_wt_8_ROI_005", "X0831_d8_f1_2s_wt_8_ROI_004",
"X0831_d8_f1_2s_wt_8_ROI_003", "X0831_d8_f1_2s_wt_8_ROI_002",
"X0831_d8_f1_2s_wt_8_ROI_001", "X0831_d8_f1_10s_wt_8_ROI_019",
"X0831_d8_f1_10s_wt_8_ROI_018")
я могу генерировать требуемый вектор символов с помощью ldply:
mouse<-ldply(strsplit(cat, "_"))
paste(mouse$V4,mouse$V8,sep="_")
но искал более элегантный метод сделать это. Может быть, использовать sapply или что-то подобное?
я могу генерировать вектор символов, содержащий один элемент:
sapply(strsplit(cat, "_"), "[[",4)
, но не может выяснить способ извлечения обоих элементов (и вставить их вместе).
Проверьте [grep] (https://stat.ethz.ch/R-manual/R-devel/library/base/html/grep.html), в частности 'regexpr' и' gregexpr', они будут давать вы первый экземпляр и позиция всех экземпляров соответственно. Это в сочетании с 'substr' заключается в том, как я делаю большую часть этого типа работы – Badger
, если первая строка всегда заканчивается' s', вы можете 'gsub (". * _ (\\ d + s) _. * _ (\\ d + $) "," \\ 1 _ \\ 2 ", cat)' – jenesaisquoi