У меня есть ряд имен файлов,извлечение конкретных элементов в строке в R
a<-c("asd1-36457-1-qwe-20.txt","asd-3234-4-qwe-20.txt","asd1-5457-3-qwe-20.txt",
"asd1-546-2-qwe-20.txt","asd1-789-1-qwe-20.txt","asd-542112-7-qwe-20.txt",
"asd-754-4-qwe-20.txt","asd-3466-3-qwe-20.txt","asd-4675-2-qwe-20.txt")
Я хочу, чтобы извлечь второй и третий блоки между «-» в имени каждого файла, а затем перечислить эти два блока как два столбца в матрице. Я использую следующий код для продолжения:
b<-as.numeric(unlist(Map(function(x) x[2], strsplit(a,"-"))))
c<-as.numeric(unlist(Map(function(x) x[3], strsplit(a,"-"))))
cbind(b,c)
Результат выглядит следующим образом:
b c
[1,] 36457 1
[2,] 3234 4
[3,] 5457 3
[4,] 546 2
[5,] 789 1
[6,] 542112 7
[7,] 754 4
[8,] 3466 3
[9,] 4675 2
Это правильно. Но мне интересно, есть ли более удобный способ, например, «gsub», решить эту проблему? Благодарю.
Посмотрите на '? Regexpr' пример' parse_one' в нижней части файла справки, который показывает, как это сделать с регулярным выражением в стиле perl – Shape