r - 解析多空间分隔的数据集并将其存储在正确的数据结构中
问题描述
我有一个包含姓名、年龄和公司的大型数据集。
文件.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"
到目前为止,我推断可以使用命名向量
的列表或者可以使用对象列表。
或者有没有更好的方法来解决这个问题?
用代码示例进行解释会很有帮助
解决方案
我们可以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")
推荐阅读
- mysql - 从类别表和其他两个表中获取名称
- r - 向 ggplot Boxplot 添加附加点
- java - org.omg.CORBA.ORBPackage.InvalidName: IDL:omg.org/CORBA/ORB/InvalidName:1.0
- python - 如何在 Python 中动态更改日志文件输出
- linux - Ubuntu 20.04 在访问 NTFS 分区上的某些文件时挂起
- logging - 如何停止 LTPA 令牌 SystemOut.log 中重复出现错误消息
- c - 超出最大递归深度。堆栈溢出异常
- c++ - 将地址清理程序与 MSVC 一起使用时应用程序崩溃
- excel - VBA 自动填充范围调整
- c - C 指针,玩转转换