Разбор набора данных, разделенных несколькими пробелами, и сохранение его в нужной структуре данных - PullRequest
1 голос
/ 09 мая 2020

У меня есть большой набор данных с именем, возрастом и компанией.

file.txt:

name firstname1 lastname1
age 30
Company ABC Ltd

name firstname2 lastname2
age 28
Company XYZ Ltd

Мне нужно написать функцию, которая будет возвращать структуру данных с учетом ключевого атрибута, предоставить соответствующее значение данного ключа.

Например,

 content <- parseFile("file.txt")
 content[1]["name"]    # "firstname1 lastname1"
 content[1]["age"]     # 30
 content[1]["Company"] # "ABC Ltd"

 content[2]["name"]    # "firstname2 lastname2"
 content[2]["age"]     # 28
 content[2]["Company"] # "XYZ Ltd"

До сих пор я предполагал, что можно использовать список именованных векторов или
список объектов.

Или есть какой-нибудь лучший способ решить эту проблему?

объяснение с примером кода будет полезным

1 Ответ

1 голос
/ 09 мая 2020

Мы можем использовать readLines для получения данных, создать разделитель с sub и создать данные из двух столбцов. Кадр

df1 <- read.csv(text =sub(" ", ",", dat), header = FALSE,
         stringsAsFactors = FALSE)

Если нам нужно разделить как list

lst1 <-  split(setNames(as.list(df1$V2), df1$V1), cumsum(df1$V1 == 'name'))


lst1[[1]][['name']]
#[1] "firstname1 lastname1"
lst1[[1]][['age']]
#[1] "30"
lst1[[2]][['age']]
#[1] "28"

данные

dat <- readLines("file.txt")
...