Извлечь диапазон чисел в списке - PullRequest
3 голосов
/ 15 апреля 2019

Я хочу выбрать часть числа во всех строках списка

В списке у меня есть такая комбинация цифр и букв, но с более чем 50000 строками: E0091349 W0532050 E0085229 ..Сначала мне нужно извлечь в новом списке первый элемент (букву), затем 3 первых числа в другом списке, другие со следующими 2 и, наконец, другие с последними 2.

Я уже пробовалиспользовать lapply или mapply, но я впервые в r studio, и я все еще немного растерялся

В конце у меня должно быть 4 списка: E0091349 W0532050 E0085229 ... 1-й список: EWE ... 2-йсписок: 009 053 008 ... 3-й список: 13 20 52 ... 4-й список: 49 50 29 ...

Ответы [ 2 ]

1 голос
/ 15 апреля 2019

Базовое решение R с использованием read.table,

read.table(text = sub('(.{1})(.{3})(.{2})(.{2})', '\\1 \\2 \\3 \\4', d1$x),
              colClasses = rep('character', 4))
#  V1  V2 V3 V4
#1  E 009 13 49
#2  W 053 20 50
#3  E 008 52 29

ДАННЫЕ:

dput(d1)
structure(list(x = c("E0091349", "W0532050", "E0085229")), class = "data.frame", row.names = c(NA, 
-3L))
0 голосов
/ 15 апреля 2019

Мы можем использовать separate, если вы хотите разбить строку в фиксированном месте

tidyr::separate(df, col, paste0("V", 1:4), c(1, 4, 6, 8))

#  V1  V2 V3 V4
#1  E 009 13 49
#2  W 053 20 50
#3  E 008 52 29

data

df <- data.frame(col = c("E0091349", "W0532050", "E0085229"))
...