在R中修改文本文档后创建相同的格式

时间:2019-02-27 16:04:26

标签: r format document

我正在尝试使用具有与数据框分开的特定标题信息来修改文本文档:

文档图片:https://imgur.com/a/4qNAUM0

文档副本:http://www.filedropper.com/elist

我可以加载文档并进行良好的编辑:

data <- read.table('elist.txt')

d <- data[!(data$V3==1),] # removes pointless 1 triggers
d2 <- d[!(d$V3>199),] # removes probe triggers
d3 <- d2[!(d2$V3<4),] # removes probes more triggers
d4 <- d3[!(d3$V3 == shift(d3$V3)),] # removes duplicate triggers
d5 <- d4[!(d4$V3 == shift(d4$V3+1)),] # removes +1 duplicate triggers

但是,我不知道如何导出文档,因此它包含相同的标题信息-仅使用write.table()函数似乎不起作用。

我的问题是,如何在保持格式与原始格式相同的同时修改文档?

1 个答案:

答案 0 :(得分:1)

您可以使用readLines

阅读首行
heading_text <- readLines('elist.txt') # read all lines
heading_text <- heading_text[grepl("^#", unlist(l))] # subset comment lines (starting with #)
heading_text <- trimws(gsub("^#|\\\t", " ", heading_text)) # trim whites, remove initial # and the tab separator flag (\t)

您可以使用regex来选择标题行。在这种情况下,我选择了其中包含单词 item 的行。然后,您需要修剪多个白色并设置列分隔符。

header <- gsub("\\s+", ",", heading_text[grepl("item", heading_text)])
header <- unlist(strsplit(header, ","))

您应注意以下事实:数据读取不正确;标头的长度为11时,共有12列。您需要解决此问题。在此示例中,我刚刚删除了最后一列

data <- read.table('elist.txt')
data <- data[1:11]
names(data) <- header
head(data)