【问题标题】:Extra Tab in a header标题中的额外选项卡
【发布时间】:2016-11-02 16:45:11
【问题描述】:

我有许多大型数据文件,我想从中提取数据并将提取的数据输出为相应的 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 表示文件中的一个选项卡,并注意在将我的代码应用于修改后的数据后成为标题行的额外选项卡。

【问题讨论】:

  • 我不太确定我是否理解。你想分享一个小例子吗?文件中的某一行包含一个标签太多?前 36 行要丢弃?如果你只是把标题弄错了,你应该把变量名移过来,把它们移回去应该不难......
  • 提供的示例。我想知道这是否是 readLines 问题。

标签: r function read.table


【解决方案1】:

我不确定这是最好的答案,欢迎任何改进。我通过使用 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 行,显然文件名需要更改)。

这可行,但我相信有人可以做得更好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-30
    • 2021-09-02
    • 1970-01-01
    • 1970-01-01
    • 2015-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多