есть ли функция для чтения файла txt с регулярным выражением - PullRequest
0 голосов
/ 27 января 2020

У меня есть текстовый файл с текущим форматом строк

1\t[2,3,4,5,6,45]
2\t[4,4,4,4,4,4,4,43,5]
etc

Я хочу прочитать его как data.frame, где имена столбцов - это номера строк, а значения - это числа в скобках

1 2
2 4
3 4
5 4

Ответы [ 2 ]

1 голос
/ 27 января 2020

Начиная с ввода как

x <- '
1\t[2,3,4,5,6,45]
2\t[4,4,4,4,4,4,4,43,5]
'

Вы можете сделать

library(data.table)

x <- 
  fread(gsub('\\[|\\]', '', x))[, .(value = strsplit(V2, ',')[[1]]), V1]

dcast(x, rowid(V1) ~ V1)[, -'V1']

#       1  2
# 1:    2  4
# 2:    3  4
# 3:    4  4
# 4:    5  4
# 5:    6  4
# 6:   45  4
# 7: <NA>  4
# 8: <NA> 43
# 9: <NA>  5
1 голос
/ 27 января 2020

Один из вариантов - прочитать с readLines, а затем выполнить преобразование

library(dplyr)
library(stringr)
library(purrr)
str_extract_all(v1, "\\d+") %>% 
    map(`[`,-1) %>% 
    reduce(rowr::cbind.fill, fill = NA) %>%
    set_names(str_extract(v1, "\\d+"))
#     1  2
#1    2  4
#2    3  4
#3    4  4
#4    5  4
#5    6  4
#6   45  4
#7 <NA>  4
#8 <NA> 43
#9 <NA>  5

data

v1 <- readLines('file1.txt')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...