Разделение чисел в соответствии с положением цифры - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь создать переменную new, в которой будут храниться 2-я, 3-я и 4-я и последние три цифры каждого числа tx. Например, первое число в tx будет 812500 в new

Я сделал это

tx<-c(4812129004534500, 6430650557835, 579900098554, 382183224511777, 49057595473648551, 64951444098766, 649544543781, 87567909876421)
new <- sapply(tx, function(x) substring(x, first=c(2,3,4), last=3))

, но вывод нежелателен.

Ответы [ 2 ]

6 голосов
/ 07 ноября 2019

gsub() с приведенным ниже шаблоном регулярного выражения будет работать ..

Что делает:

Он выбирает части между () -браками в виде групп.
- Theпервая группа - цифры 2, 3 и 4
- вторая группа - последние три цифры
Затем все заменяется на group1 + group2

gsub( "^\\d(\\d{3}).*(\\d{3}$)", "\\1\\2", tx )
[1] "812500" "430835" "799554" "821777" "905552" "495766" "495781" "756421"
3 голосов
/ 07 ноября 2019

Попробуйте

as.numeric(paste0(substr(tx, 2, 4), substr(tx, (nchar(tx)-2), nchar(tx))))
#[1] 812500 430835 799554 821777 905552 495766 495781 756421

Вариант вышеупомянутого может быть (как указано @jay.sf),

as.numeric(paste0(substr(tx, 2, 4), substring(tx, nchar(tx) - 2)))
...