在 R 中修改文本文档后创建相同的格式
creating identical formating after text document modification in R
我正在尝试使用与数据框分开的特定 header 信息修改文本文档:
文件图片: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
但是,我不知道如何导出文档,因此它包含相同的 header 信息 - 仅使用 write.table() 函数似乎不起作用。
我的问题是,如何修改文档,同时尽可能保持与原始格式相同的格式?
您可以使用 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
选择 header 行。在这种情况下,我选择了其中包含单词 item 的行。然后你需要trim多个白色并设置一个列分隔符。
header <- gsub("\s+", ",", heading_text[grepl("item", heading_text)])
header <- unlist(strsplit(header, ","))
数据读取不正确,请注意;有 12 列,而您的 header 长度为 11。您需要修复它。在这个例子中,我刚刚删除了最后一列
data <- read.table('elist.txt')
data <- data[1:11]
names(data) <- header
head(data)
我正在尝试使用与数据框分开的特定 header 信息修改文本文档:
文件图片: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
但是,我不知道如何导出文档,因此它包含相同的 header 信息 - 仅使用 write.table() 函数似乎不起作用。
我的问题是,如何修改文档,同时尽可能保持与原始格式相同的格式?
您可以使用 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
选择 header 行。在这种情况下,我选择了其中包含单词 item 的行。然后你需要trim多个白色并设置一个列分隔符。
header <- gsub("\s+", ",", heading_text[grepl("item", heading_text)])
header <- unlist(strsplit(header, ","))
数据读取不正确,请注意;有 12 列,而您的 header 长度为 11。您需要修复它。在这个例子中,我刚刚删除了最后一列
data <- read.table('elist.txt')
data <- data[1:11]
names(data) <- header
head(data)