一种选择是使用来自tidyverse 的separate
library(tidyverse)
tibble(col1 = str) %>%
separate(col1, into = paste0("col", 0:7), c(4, 8, 16, 20, 26, 30, 32)) %>%
select(-1)
# A tibble: 6 x 7
# col1 col2 col3 col4 col5 col6 col7
# <chr> <chr> <chr> <chr> <chr> <chr> <chr>
#1 AA00 100BC300 AA01 111000 AA02 99 F40400F4053DF40C0000F4030000F40680F4077
#2 AA00 100BC300 AA01 111000 AA02 99 F40400F4053DF40C0000F4030000F40680F4077
#3 AA00 100BC300 AA01 111000 AA02 99 F40400F4053DF40C0000F4030000F40680F4077
#4 AA00 100BC300 AA01 111000 AA02 99 F40400F4053DF40C0000F4030000F40680F4077
#5 AA00 100BC300 AA01 111000 AA02 99 F40400F4053DF40C0000F4030000F40680F4077
#6 AA00 100BC300 AA01 111000 AA02 99 F40400F4053DF40C0000F4030000F40680F4077
或者另一种选择是没有任何带有base R 的包,方法是根据位置创建分隔符,然后使用read.csv 读取
read.csv(text = sub("^.{4}(.{4})(.{8})(.{4})(.{6})(.{4})(.{2})(.*)",
"\\1,\\2,\\3,\\4,\\5,\\6,\\7", str), header = FALSE,
stringsAsFactors = FALSE)
# V1 V2 V3 V4 V5 V6 V7
#1 AA00 100BC300 AA01 111000 AA02 99 F40400F4053DF40C0000F4030000F40680F4077
#2 AA00 100BC300 AA01 111000 AA02 99 F40400F4053DF40C0000F4030000F40680F4077
#3 AA00 100BC300 AA01 111000 AA02 99 F40400F4053DF40C0000F4030000F40680F4077
#4 AA00 100BC300 AA01 111000 AA02 99 F40400F4053DF40C0000F4030000F40680F4077
#5 AA00 100BC300 AA01 111000 AA02 99 F40400F4053DF40C0000F4030000F40680F4077
#6 AA00 100BC300 AA01 111000 AA02 99 F40400F4053DF40C0000F4030000F40680F4077