提取列表中的数字范围

时间:2019-04-15 09:53:28

标签: r list numbers extract

我想在列表的所有行中选择一部分数字

在列表中,我将数字和字母组合在一起,但是有超过50000行: E0091349 W0532050 E0085229 ... 首先,我需要在新列表中提取第一个项目(字母),然后在另一个列表中提取3个第一个数字,另一个与下一个2,最后一个与最后2个。

我已经尝试使用lapply或mapply,但这是我第一次在r studio中使用,但我仍然有些失落

最后我应该有4个列表: E0091349 W0532050 E0085229 ... 第一个清单: Ë w ^ Ë ... 第二个清单: 009 053 008 ... 第三清单: 13 20 52 ... 第四名: 49 50 29 ...

2 个答案:

答案 0 :(得分:1)

使用read.table

的基本R解决方案
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))

答案 1 :(得分:0)

如果您想在固定位置分割字符串,可以使用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

数据

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