Append=R dump()函数的TRUE选项

Append=R dump()函数的TRUE选项,r,append,dump,R,Append,Dump,对于模拟研究,我想将一个样本的结果保存在一个R文件中,然后将下一个样本的结果附加到这个文件中 为了实现这一点,我使用了函数dump()。要使用来自下一次模拟的数据附加文件,我希望使用此函数的append=TRUE选项。但是,这个函数对我来说不起作用 当我模拟数据时,将其保存为R文件(通过使用dump函数),然后使用append=TRUE选项再次执行此操作。dump函数覆盖数据,而不追加文件 我做错了什么 为了说明问题,以下是我的示例代码: #Simulate data x <- rnor

对于模拟研究,我想将一个样本的结果保存在一个R文件中,然后将下一个样本的结果附加到这个文件中

为了实现这一点,我使用了函数dump()。要使用来自下一次模拟的数据附加文件,我希望使用此函数的append=TRUE选项。但是,这个函数对我来说不起作用

当我模拟数据时,将其保存为R文件(通过使用dump函数),然后使用append=TRUE选项再次执行此操作。dump函数覆盖数据,而不追加文件

我做错了什么

为了说明问题,以下是我的示例代码:

#Simulate data 
x <- rnorm(10)
y <- rnorm(10)
xy <- data.frame(x,y)

#Dump into R file "xy.R" with option append = TRUE
dump("xy",file="xy.txt", append =TRUE)
rm(xy)  # remove the dataset form current environment

#Retrieve data from file: 
source("xy.R")
xy #100 rows

#Run the code again: Still 100 rows and not 200 as expected. 
#Old data is overwritten, new data is not appended.
#模拟数据

x您是否确实查看了输出文件

Dump将带有赋值的变量名写入文件。这意味着当你请求转储时,它会写出来

xy <- ...
或许

#Simulate data 
x <- rnorm(10)
y <- rnorm(10)
xy <- data.frame(x,y)

fn<-"xy.txt"
if(file.exists(fn)) {
    write.table(xy, file=fn, row.names=F, col.names=F, append=T)
} else {
    write.table(xy, file=fn, row.names=F, col.names=T)
}
rm(xy)  # remove the dataset form current environment

#Retrieve data from file: 
xy <- read.table(fn, header=T)
#模拟数据

x同时使用
append()
rbind()
将当前结果与以前的结果相加可能是多余的。。。我怀疑你想做一个或另一个,但不是两个都做。(另外,在添加…@BenBolker Good point Ben时需要小心标题。)。我在赶时间。我想如果我不指定标题,R会做正确的事情。对吗?@BenBolker实际上,
write.table
上的
append=T
的标题和行名都很混乱。似乎带有
rbind
read.table
更安全(但可能没有那么有效),谢谢您的评论。对于我来说,write.table函数确实具有更正确的行为(我在批处理脚本中调用该函数,并希望将并行模拟的所有输出保存在一个文件中)。我尝试了您提供的示例代码,但出现以下错误:扫描中出错(file,what,nmax,sep,dec,quote,skip,nlines,na.strings,:第1行没有6个元素,我想这是因为,正如你提到的,xy@Inga我只做了一次编辑。它对
write.table
属性有点精细,但如果数据集很大,你就不需要读取所有现有的da在写新数据之前,先做ta。祝你好运。
#Simulate data 
x <- rnorm(10)
y <- rnorm(10)
xy <- data.frame(x,y)

fn<-"xy.txt"
if(file.exists(fn)) {
    xy <- rbind(read.table(fn), xy)
}
write.table(xy,file=fn)
rm(xy)  # remove the dataset form current environment

#Retrieve data from file: 
xy <- read.table(fn)
#Simulate data 
x <- rnorm(10)
y <- rnorm(10)
xy <- data.frame(x,y)

fn<-"xy.txt"
if(file.exists(fn)) {
    write.table(xy, file=fn, row.names=F, col.names=F, append=T)
} else {
    write.table(xy, file=fn, row.names=F, col.names=T)
}
rm(xy)  # remove the dataset form current environment

#Retrieve data from file: 
xy <- read.table(fn, header=T)