write.csv()一个不等大小的data.frames列表

Bra*_*sen 8 r

我想将一个data.frame()对象列表输出到一个csv文件,这样我就可以对它进行演示了.我发现它回复了一个错误:

In write.csv(tmp[i], file = "Output.csv", append = T) :
  attempt to set 'append' ignored
Run Code Online (Sandbox Code Playgroud)

我已将输出保存到列表中(所有这些都可以强制转换为df),这是一个示例:

outputs <- list() 
outputs$fivenum <- fivenum(rnorm(100))
outputs$summary <- as.data.frame(as.vector(summary(rnorm(100))))

tmp <- lapply(outputs, as.data.frame)

write.csv(tmp, file="Output.csv",append=T)
Run Code Online (Sandbox Code Playgroud)

每个追加操作都必须具有相同数量的列吗?

Jos*_*ich 13

这是一个警告,而不是错误.你不能改变append=FALSEwrite.csv. ?write.csv说:

尝试更改'append','col.names','sep','dec'或'qmethod'会被忽略,并会显示警告.

使用write.tablesep=","代替.

  • @Brandon:怎么样`sapply(tmp,write.table,file ="Output.csv",append = TRUE,sep =",")`? (5认同)

Dee*_*ena 5

您现在可以使用sheetr在单个 CSV 中导出多个数据帧

install.packages("devtools")
library(devtools)

# Install package from github
install_github('d-notebook/sheetr')
library(sheetr)

# Create a list of dataframes
iris_dataframe = list()
iris_dataframe[["Setosa subset"]] = head(iris[iris$Species == "setosa",])
iris_dataframe[["Versicolor subset"]] = head(iris[iris$Species == "versicolor",])

# Write the list of dataframes to CSV file
write_dataframes_to_csv(iris_dataframe, "exmaple_csv.csv")
Run Code Online (Sandbox Code Playgroud)

这将导出:

截屏

.
.

或者,如果您更喜欢手动执行此操作,则可以使用sink文件:

# Sample dataframes:
df1 = iris[1:5, ]
df2 = iris[20:30, ]

# Start a sink file with a CSV extension
sink('multiple_df_export.csv')

 # Write the first dataframe, with a title and final line separator 
cat('This is the first dataframe')
write.csv(df1)
cat('____________________________')

cat('\n')
cat('\n')

# Write the 2nd dataframe to the same sink
cat('This is the second dataframe')
write.csv(df2)
cat('____________________________')

# Close the sink
sink()
Run Code Online (Sandbox Code Playgroud)