如何将具有不同行数的数据帧列表保存到R中的一个文件中?

时间:2016-04-09 19:34:44

标签: r dataframe

我有一个包含不同行数(每行超过1M行)的数据框列表,我希望将它们保存到单个文件中,因为它们而不会附加它们或保存到单独的文件中。因此,他们保留数据框列表的结构,因为它们具有不同的信息和数据类型。

DO:

似乎只能通过将每个数据框保存在单独的文件中来实现:

data2 <- list("inventory"=inventory,"Warehouse"=Warehouse,"Shop_inventory"=Shop,"Result"=Result)

等等。

但我敢打赌应该有其他选择。

如果有办法将其保存为MS Access友好类型的文件,那将是理想的。 write.table(data2[[1]],"./df1.csv",sep = ",") write.table(data2[[2]],"./df2.csv",sep = ",") 包中有mdb.get()个函数。我想知道是否有类似的东西可以用这种格式写文件?

2 个答案:

答案 0 :(得分:1)

这是一般方法

# a list of data.frames
df1 <- data.frame(x=1:3, y=letters[1:3])
df2 <- data.frame(x=11:13, y=letters[11:13])
x <- list(df1, df2)

# combine
y <- do.call(rbind, x)

# write to csv
write.csv(y, 'test.csv', row.names=FALSE)

这确实假设所有data.frame对象具有相同的列名。

答案 1 :(得分:1)

在此处使用iris数据集并创建示例数据框df。使用xlsx包的write.xlsx函数和参数append=TRUE。您可以根据自己的要求将row.namescol.names等同于FALSETRUE。保持file参数相同。

  library(xlsx)
  df <- data.frame(a=1:10,b=11:20,c=21:30)

  write.xlsx(iris$Species, file="filename.xlsx", sheetName="Data1",row.names=F, col.names=F)
  write.xlsx(iris$Sepal.Length, file="filename.xlsx", sheetName="Data2",row.names=F, col.names=F,append=TRUE)
  write.xlsx(iris$Petal.Length, file="filename.xlsx", sheetName="Data3",row.names=F, col.names=F, append=TRUE)
  write.xlsx(df, file="filename.xlsx", sheetName="Data4",row.names=F, col.names=T, append=TRUE)

在R的当前工作目录中创建的名为filename.xlsx的文件中,每个输出将有四张不同的数据。