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