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

如何将不同行数的数据帧列表保存到R中的一个文件中?,r,dataframe,R,Dataframe,我有一个具有不同行数(每个行超过1M行)的数据帧列表,我希望将它们保存到单个文件中,而不附加它们或保存到单独的文件中。以便它们保持数据帧列表的结构,因为它们具有不同的信息和数据类型。 data2 <- list("inventory"=inventory,"Warehouse"=Warehouse,"Shop_inventory"=Shop,"Result"=Result) 等等 但我敢打赌应该有其他选择 如果有办法将其保存为MS Access友好型文件,这将是理想的选择。在Hmisc包

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

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

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


如果有办法将其保存为MS Access友好型文件,这将是理想的选择。在
Hmisc
包中有
mdb.get()
函数。我想知道是否有类似的东西可以以这种格式编写文件?

这里是一种通用方法

# 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)
#数据帧列表

df1在此使用
iris
数据集并创建示例数据帧
df
。使用
xlsx
包的
write.xlsx
函数和参数
append=TRUE
。您可以根据需要将
行名称
列名称
保持为
。保持
文件
参数不变

  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)
库(xlsx)

df install.packages('XLConnect')我相信Excel不能占用超过100万行?那么这不是一个R问题。你的问题是“什么比Excel更好”。有趣的是,答案是R。这个问题是关于将数据导出到一个文件中。我需要将所有数据帧都放在一个文件中。这样我就可以在Access或任何其他工具中打开它来处理数据。
write.table()
有一个
append
选项,用于将多个数据集写入单个文件。谢谢,Robert!我对问题进行了编辑,以便更清楚地说明问题的实质——每个数据框都有不同的数据,不能也不应该追加。这就是为什么提供一个可复制的示例(和一个清晰的问题)如此重要的原因。您可以使用
saveRDS
将列表保存到单个文件中。但不清楚您对“访问友好”的想法。Robert,我的意思是它将数据帧列表保存在一个文件中,格式与MS Access兼容。当然,但如果确实存在这种文件格式,它会是什么样子?如果你不能告诉我们,很难帮上忙。这就是为什么我要问这个问题,因为网上没有信息。。例如,当我得知不可能在R中编写.mdb文件时,我感到非常惊讶。谢谢,Sowmya。但每个数据帧中都有超过100万行,这就是问题所在。这就是我提到Access的原因,Access是一种处理超过1M行文件的工具。您需要首先搜索可以处理大型文件的工具,然后切换到R以将其导出为该格式,因为您已经询问了如何将它们保存到一个文件中而不追加,即excel工作表。Excel工作表有1048576行。其他可用的工具是PowerPivot插件,用于处理十亿行。然后我们可以考虑导出数据帧。另外,还有一个名为discriment.Sowmya的软件,这正是我再次提到访问的原因。这是处理大型数据库的工具。实际上,Access无法处理大型数据库。它的文件大小限制为2GB。
  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)