如何将 3 个不同维度的数据帧保存到一个 csv 中,以便之后将它们加载到 3 个不同的数据帧中?
例如
write.table(A, file = "di2.csv", row.names = FALSE, col.names = FALSE, sep=',')
write.table(B, file = "di2.csv", row.names = FALSE, col.names = FALSE, sep=',', append=TRUE)
write.table(C, file = "di2.csv", row.names = FALSE, col.names = FALSE, sep=',', append=TRUE)
或者以更优雅的方式
write.csv(rbind(A, B, C), "di2.csv")
如何将此
CSV
加载到 3 个数据帧 A、B 和 C? 最佳答案
如评论中所述,如果您的目的只是稍后将它们读回 R,那么您可以使用保存/加载。
另一个简单的解决方案是转储/源:
A <- B <- C <- BOD # test input
dump(c("A", "B", "C"))
# read back
source("dumpdata.R")
您可以考虑的其他多对象格式是 hdf 和 SQLite 数据库(它是单个文件)。
另一方面,如果重要的是它是可读的文本,可以直接被 Excel 读取并且至少有点类似于 csv 文件,然后一个接一个地写出数据帧,每个数据帧后面都有一个空行。然后稍后读回它们,读取文件并在空行处分隔输入。
st
和 en
是 Lines
中块的开始和结束行号。A <- B <- C <- BOD # test inputs
# write data frames to a single file
con <- file("out.csv", "w")
for(el in list(A, B, C)) {
write.csv(el, con, row.names = FALSE)
writeLines("", con)
}
close(con)
# read data.frames from file into a list L
Lines <- readLines("out.csv")
en <- which(Lines == "")
st <- c(1, head(en, -1))
L <- Map(function(st, en) read.csv(text = Lines[st:en]), st, en)
注意这个问题和 Importing from CSV from a specified range of values 有一些相似之处
关于r - 从一个 CSV 保存和加载多个数据帧,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47165872/