【问题标题】:Assigning `comment()` to an R object from a .txt file将 `comment()` 分配给 .txt 文件中的 R 对象
【发布时间】:2020-02-26 18:23:23
【问题描述】:

我正在尝试为数据框分配注释以存储一些相关的元数据。我有一个用引号括起来的非结构化文本文件,有几个换行符 ('\n')。

WHO_comment<-read.table(file="WHO comment.txt", sep="\t")
comment(WHO)<-WHO_comment #Read in the comment from .txt due to its length
cat(comment(WHO)) #Database metadata

但是,读数以一个大块的形式出现,'\n' 被读取为文字字符串。用as.character() 转换它只返回行名(即'1')。

如何正确读取此文件?

【问题讨论】:

  • 确保在发布之前明确说明您的问题。
  • 它在标题中说我想分配注释“来自 .txt 文件”。这样它就不会呈现为“...一个大块”。
  • 顺便说一下,这是您原始问题的链接。这甚至是未完成的句子。 ibb.co/5rLh7rc
  • 好的@Finger Picking...我的错。 :D

标签: r string comments line-breaks


【解决方案1】:

已解决 - 我需要使用 stringsAsFactors=FALSE 正确读取文件。这段代码现在做了我想做的事,即从 .txt 文件中分配注释。

WHO_comment<-read.table(file="WHO comment.txt", sep="\t",stringsAsFactors=FALSE)
comment(WHO)<-WHO_comment #Read in the comment from .txt due to its length
cat(comment(WHO)) #Database metadata

【讨论】:

  • 有人能解释一下反对意见吗?这是我现在使用的代码。
  • 正如我在回答中所指出的,read.table 基本上是这里的错误函数(comment 不能是表格;它只能是字符向量)。该解决方案可能恰好适用于您的特定数据,但通常无法正常工作,并且由于使用了错误的函数,代码会误导并混淆实际发生的事情,而不是不言自明。
【解决方案2】:

read.table 是读取文本文件的错误函数。顾名思义,它的目的是读取表格数据。要读取文本文件,请使用readLines,然后将各个行粘贴在一起:

comment(data) = paste(readLines('WHO comment.txt'), collapse = '\n')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-21
    • 2016-08-18
    • 1970-01-01
    • 2017-02-09
    • 1970-01-01
    相关资源
    最近更新 更多