【问题标题】:How to write different long data into file in R? [duplicate]如何将不同的长数据写入R中的文件? [复制]
【发布时间】:2012-11-18 08:36:12
【问题描述】:

可能重复:
R: Print list to a text file

还有两个向量,x1,x2

x1<-1:3
x2<-1:6

我想将这两个向量写入一个名为test的文件,格式如下

1 2 3
1 2 3 4 5 6

(文件中一行一个向量)

write(file="c:/test",x1)  
write(file="c:/test",x2,append=TRUE,nlines=6)  

有简单的方法吗?

【问题讨论】:

  • 请使用rbind,伙计们!保持简单。

标签: r


【解决方案1】:

在写入和读取数据方面,更简单的方法是使用saveload

##Save both objects to the file
##BTW, you should always use a file extension
save(x1, x2, file="c:/test.RData")

##Loads both objects into your workspace
load("c:/test.RData")

【讨论】:

  • +1,除了更简单之外还更健壮,并且在浮动的情况下,不会损失精度。而且,save 可以处理任何 R 对象。
【解决方案2】:

这是一种使用一个命令将所有对象写入同一个文件的方法:

lapply(list(x1, x2), function(x) write(x, "c:/test", length(x), TRUE))

【讨论】:

  • 虽然单行很方便,但请注意文件会打开和关闭两次,因此无法很好地扩展。当速度太慢时,您会更喜欢写入文件连接(请参阅?file)。
【解决方案3】:

您还可以将paste 数字转换为字符向量,并使用writeLines 将它们转储到文件连接。

dat = list(vec1, vec2)
dat_write = paste(dat, collapse = " ")
con = file("c:\test", "w")
writeLines(dat_write, con)
close(con)

【讨论】:

  • +1 用于打开文件连接,这会产生很大的不同。但是我不认为输出是 OP 所期望的,看看as.character(dat) 做了什么。你可以改用invisible(lapply(dat, cat, "\n", file = con))
猜你喜欢
  • 1970-01-01
  • 2012-07-13
  • 1970-01-01
  • 2018-11-30
  • 1970-01-01
  • 2021-08-24
  • 1970-01-01
  • 1970-01-01
  • 2021-03-25
相关资源
最近更新 更多