首页 > 解决方案 > 解析多空间分隔的数据集并将其存储在正确的数据结构中

问题描述

我有一个包含姓名、年龄和公司的大型数据集。

文件.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"

到目前为止,我推断可以使用命名向量
的列表或者可以使用对象列表。

或者有没有更好的方法来解决这个问题?

用代码示例进行解释会很有帮助

标签: rdata-structurestext-parsing

解决方案


我们可以readLines用来获取数据,创建一个分隔符sub并创建一个两列 data.frame

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")

推荐阅读