我有许多大型数据文件,我想从中提取数据并将提取的数据作为相应的csv文件输出。
我使用以下代码(在函数中)来完成这项工作......
A <- read.table(file=InputFile,
skip=36, sep="\t", header=TRUE,
quote="\"",stringsAsFactors=FALSE)
write.csv(A,file=OutputFile, row.names=FALSE)
哪个工作正常,除了......数据中的标题行(第37行)有一个额外的标签。这意味着我必须在记事本(或类似)中打开文件并删除选项卡才能应用该功能。
是否有人有任何代码会删除此额外标签?
这里添加一些清晰度是文件外观的一个例子......
lines of data to be skipped
apples\toranges\tgrapes\t
1\t3\t5
2\t8\t3
......这就是我希望它看起来像
lines of data to be skipped
apples\toranges\tgrapes
1\t3\t5
2\t8\t3
其中\ t表示文件中的选项卡,并在将我的代码应用于修改后的数据后注明了标题行中的额外选项卡。
答案 0 :(得分:0)
我不确定这是最好的答案,欢迎任何改进。我通过使用readLines()和writeLines()解决了这个问题,如下所示。
首先,我有一个示例文本文件,如下所示
blah
blah
blah
apples oranges grapes
1 2 3
3 2 1
可能不是很明显,但在葡萄之后还有一个额外的标签。标题行。
我使用以下代码读入文本文件
A <- readLines("sample01.txt", n = -1,skipNul=TRUE)
我在f3lix How to trim leading and trailing whitespace in R?找到了一个有用的函数,我使用了函数
trim.trailing <- function (x) sub("\\s+$", "", x)
如下,
A[4] <- trim.trailing(A[4])
然后我创建了一个没有最后一个标签的文件,该标签将成为标题列
writeLines(A, con = "sample02.txt", sep = "\n", useBytes = FALSE)
给出了以下文本文件,
blah
blah
blah
apples oranges grapes
1 2 3
3 2 1
没有尾随标签。这意味着我可以在我的原始功能中使用它(有一些小的改动,例如跳过3行而不是36行,显然文件名需要改变)。
这有效,但我相信那里的人可以做得更好。