Data Output 輸出資料
write.csv(Count_4M, file="/home/account/Table_4M.csv") save.image("/home/account/Table_4M.RData")
write.csv(DJ_index3, file="/Users/DJI_2007.csv") save.image("/Users/DJI.xts_2007.RData")
R 在執行程式時,可以順便輸出執行的內容
source("script.R", echo = TRUE)
將 R 中執行過的歷史指令儲存在檔案中
savehistory("my_history.R")
資料檔案輸出
sink() : 讓程式的輸出訊息直接儲存至檔案
sink("sink-example.txt")
i <- 1:3
outer(i, i, "*")
sink()
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 2 4 6
[3,] 3 6 9
save 函數可以將變數儲存於硬碟中
x <- c(1.2, 3.4, 5.6)
y <- x ^ 2
save(x, y, file = "xy.RData")
x
# [1] 1.2 3.4 5.6
y
# [1] 1.44 11.56 31.36
save 函數預設在儲存資料時會使用 gzip 壓縮格來儲存,如果要儲存的資料非常大,可以更改壓縮的演算法:
壓縮格式 | 壓縮檔大小 |
---|---|
gzip(預設值) | 5.3 MB |
bzip2 | 4.8 MB |
xz | 4.4 MB |
x.large <- runif(10^6)
x.large
[1] 0.791662516 0.107012027 0.703947517 0.205865177 0.872278025 0.417421515
[7] 0.563431149 0.500942581 0.405978959 0.957555548 0.006970087 0.002726804
[13] 0.603437413 0.025101994 0.119972033 0.054228063 0.215705717 0.660148392
[19] 0.920135016 0.158853791 0.677411942 0.018811909 0.127694370 0.834118336
[25] 0.052092139 0.806651688 0.278356788 0.328365936 0.862158333 0.410019493
object.size\(x.large\)
# 8000040 bytes
save\(x.large, file = "compress.xz", compress = "xz"\)
saveRDS(): 儲存單一個變數,也可以使用 saveRDS 來將資料儲存為 rds 檔:
saveRDS(women, "women.rds")
readRDS(): 從 rds 檔案中載入變數,可以使用 readRDS 函數:
women2 <- readRDS("women.rds")
identical(women, women2)
write.csv(): 將 R 的 data frame 輸出為 csv 檔,可以使用 write.csv 函數:
write.csv(cars, file = "output-cars.csv")
write.table(): 函數的功能與 write.csv 類似,但可用 sep 指定分隔字元:
write.table(cars, file = "output-cars.csv", sep = "\t")
圖形檔案輸出
png() 函數: 可以將圖形輸出為 png 點陣圖檔:
set.seed(5)
x <- rnorm(100)
png("output.png", width = 640, height = 360) # 設定輸出圖檔
hist(x) # 繪圖
dev.off() # 關閉輸出圖檔
jpeg、tiff 與 bmp 這些函數也可以將圖形輸出成各種不同的點陣圖檔,使用方式跟 png 函數都相同。
若要輸出向量圖,可以使用 pdf 或是 svg 函數:
pdf("output.pdf", width = 4, height = 3)
hist(x)
dev.off()
postscript(): 如果要將 R 所繪製的圖形放在 LaTeX 中使用,可以使用 postscript 指令輸出成適用於 LaTeX 環境的 eps 向量圖檔:
postscript("output.eps", width = 4.0, height = 3.0,
horizontal = FALSE, onefile = FALSE, paper = "special",
family = "ComputerModern", encoding = "TeXtext.enc")
hist(x)
dev.off()
ggplot2
library\(ggplot2\)
print(): 如果使用 ggplot2 套件在指令稿中畫圖時,必須加上 print 才能使圖形檔案正常輸出:
pdf("output.pdf", width = 4, height = 3)
print(qplot(x))
dev.off()
ggplot2 本身也提供了一個 ggsave 圖形輸出函數,它可以在 R 互動式的操作模式中,將已經畫在螢幕上的圖形輸出為圖檔:
qplot(x)
ggsave("plot.pdf", width = 4, height = 3)