【问题标题】:Write data to file with tabs使用选项卡将数据写入文件
【发布时间】:2013-01-03 11:21:41
【问题描述】:

我有一些文件,其中的信息由制表符分隔。我想将计算值附加到每个特定文件,并尝试使用“粘贴”命令获得相同的格式,但它分隔了一行而不是一个制表符。 该文件看起来像([tab] 代表一个选项卡):

text[tab]=[tab]value
text[tab]=[tab]value

使用粘贴无法创建带有制表符的单行,因为它会打印 \t:

conv <- paste("conversion", "=", (y[,2]/90.6),sep="\t")

但如果我稍后尝试使用以下方式添加标签:

conv <- paste("conversion", "=", (y[,2]/90.6),sep=",")
write(conv, file = "data.dat", append = TRUE, sep = "\t")

"conv" 出现在不同的行中:

text[tab]=[tab]value
text[tab]=[tab]value
conversion
=
11.7991169977925

而不是在标签中(我想要的):

text[tab]=[tab]value
text[tab]=[tab]value
conversion[tab]=[tab]11.80

我确信必须有一个非常简单的解决方案,但我根本找不到。谢谢!

【问题讨论】:

  • 不得不问:你确定要这样做吗?典型的文本文件使用制表符(或其他分隔符)分隔数据,而不是关系,即您的“=”符号。我怀疑任何想要使用您的输出文件的人都不会想要制表符分隔的“=”符号。为什么不直接创建列名,例如“名称”和“值”?
  • @CarlWitthoft 我这样做的原因是因为数据文件与我使用的跟踪软件相关联,并且我希望将此信息与文件相关联。不过感谢您的评论

标签: r paste


【解决方案1】:

我认为这使用 Arun 的建议实现了您想要的。不过,我同意 Carl Witthoft 的评论。

y1 <- c(10, 20)
y2 = c(100,200)
y <- data.frame(y1,y2)
colnames(y) <- c('y1','y2')

y3 <- (y[,2]/90.6)

df <- data.frame('conversion', '=', y3)
colnames(df) <- c('t1', 't1', 'y3')
df

write.table(df, file = "c:/users/Mark W Miller/simple R Programs/my.data.txt", 
            append = TRUE, sep = "\t", row.names=FALSE, col.names=FALSE, quote=FALSE)

输出文件是:

conversion  =   1.1037527593819
conversion  =   2.2075055187638

【讨论】:

  • 谢谢,解决方案确实是使用数据框和 'write.table' 而不是 'write' 同时包括 'row.names=FALSE, col.names=FALSE, quote=FALSE'跨度>
猜你喜欢
  • 2010-10-14
  • 1970-01-01
  • 1970-01-01
  • 2012-02-21
  • 2011-07-30
  • 1970-01-01
  • 1970-01-01
  • 2019-10-19
  • 1970-01-01
相关资源
最近更新 更多