如何将3个不同维度的数据帧保存到一个csv中,以便在3个不同的数据帧中加载它们?
E.g
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?
答案 0 :(得分:3)
这对我有用:
save(A_table, B_table, C_table, file="temp.Rdata")
load("temp.Rdata")
答案 1 :(得分:1)
如评论中所述,如果您的目的只是稍后将其读回R,那么您可以使用保存/加载。
另一个简单的解决方案是dump / source:
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)
之间存在一些相似之处