Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从多个数据帧中使用循环R写入多个文件?_R_File_Loops - Fatal编程技术网

如何从多个数据帧中使用循环R写入多个文件?

如何从多个数据帧中使用循环R写入多个文件?,r,file,loops,R,File,Loops,我从22个不同的文件中读取了22个不同的数据帧,并将对象命名为r1到r22。现在我想再把它们写在22个不同的文件中。我想使用循环。这是我的剧本: for(i in 1:2) { write.table(paste("r", i, sep = ""), paste("r",i,".txt",sep="") , sep = " ", col.names=F, row.names=FALSE, quote=F) } 它不会在文件r1中写入

我从22个不同的文件中读取了22个不同的数据帧,并将对象命名为r1到r22。现在我想再把它们写在22个不同的文件中。我想使用循环。这是我的剧本:

for(i in 1:2)  {        
    write.table(paste("r", i, sep = ""), paste("r",i,".txt",sep="") , sep = " ",
                col.names=F, row.names=FALSE, quote=F)  
}
它不会在文件r1中写入r1的值,实际上它只在文件中写入r1并保存它

你能告诉我怎么做吗?

试着用evalparsetext=paster,i,sep=

现在您的代码将是:

for(i in 1:22) {
write.table(eval(parse(text=paste("r", i, sep = ""))), paste("r",i,".txt",sep="") , 
            sep = " ",col.names=F, row.names=FALSE, quote=F)
}

听起来您在环境中将所有22个data.Frame作为单独的对象?在这种情况下,for循环可能是最简单的选择

作为一种替代方法,如果你经常做这类事情,当我阅读中的文件时,我会将它们收集到一个列表中,然后你可以用同样的方法写出它们

# assuming there is a file list like this with each element a data.frame
file.list <- list(r1,r2,r3...r22)

file.names <- paste(rep("r", length(file.list)), c(1:length(file.list)), sep = "")

mapply(function(x,y) {write.table(x, y, sep = " ", col.names=F, row.names=FALSE, quote=F)}, file.list, file.names)

非常感谢你!太棒了!