2016-07-06 152 views
0

我在导出数据框从列表到txt文件中有问题。我找到了一些解决方案,但它只适用于矢量。这里有一个例子:从列表导出数据帧到txt文件

dataframe1 <- data.frame(a= c(1,2,3,4,5), b= c(1,1,1,1,1)) 
dataframe2 <- data.frame(a= c(5,5,5), b= c(1,1,1)) 
mylist <- list(dataframe1, dataframe2) 

我想的是,TXT文件看起来像这样:

$dataframe1 
a b 
1 1 
2 1 
3 1 
4 1 
5 1 

$dataframe2 
a b 
5 1 
5 1 
5 1 

谢谢你的帮助。

回答

4

假设您的列表名为:

mylist<-structure(list(dataframe1 = structure(list(a = c(1, 2, 3, 4, 
5), b = c(1, 1, 1, 1, 1)), .Names = c("a", "b"), row.names = c(NA, 
-5L), class = "data.frame"), dataframe2 = structure(list(a = c(5, 
5, 5), b = c(1, 1, 1)), .Names = c("a", "b"), row.names = c(NA, 
-3L), class = "data.frame")), .Names = c("dataframe1", "dataframe2" 
)) 

你可以试试:

con<-file("temp.csv",open="at") 
Map(function(x,y) {cat(file=con,y,"\n");write.table(x,file=con,quote=FALSE,row.names=FALSE)}, 
    mylist,names(mylist)) 
close(con) 

上面会写上文件temp.csv的文件。如果你想让它工作,你必须给名单上的名字。

另外,如果您没有问题的print方法,你可以在标准输出重定向到一个文件:

sink("temp.csv") 
print(mylist) 
sink(NULL) 
+0

谢谢。打印方法的替代方案是我想要的。是否也可以从书面文件中删除行名称? – Eco06

+0

我在表格的最后发现了一个警告按钮:[达到了getOption(“max.print”) - 省略了3639行]?! – Eco06