我正在尝试使用具有与数据框分开的特定标题信息来修改文本文档:
文档图片: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()函数似乎不起作用。
我的问题是,如何在保持格式与原始格式相同的同时修改文档?
答案 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)