在這裏熔融data.frame是數據幀結構我正在與工作:ggplot通過中的R
> str(final.c)
'data.frame': 218916 obs. of 7 variables:
$ strain : chr "CX11285" "ED3048" "JU1200" "CX11315" ...
$ row : Factor w/ 8 levels "A","B","C","D",..: 1 1 1 1 1 1 2 2 2 2 ...
$ col : Factor w/ 12 levels "1","2","3","4",..: 1 3 5 7 9 11 1 3 5 7 ...
$ variable: Factor w/ 79 levels "n","meanTOF",..: 1 1 1 1 1 1 1 1 1 1 ...
$ value : num 312 697 159 381 175 110 324 198 179 375 ...
$ L1 : int 1 1 1 1 1 1 1 1 1 1 ...
$ set : num 1 1 1 1 1 1 1 1 1 1 ...
這裏是由ggplot生成的直方圖的例子:
var <- "norm.n"
plate <- c(1,5)
dat <- final.c
day <- 1
plot <- ggplot(subset(dat, variable %in% var & L1 %in% plate & set %in% day),
aes(value, fill = factor(L1))) + geom_histogram()
上述情節看看這個大型融化的data.frame的一個子集(我說它被融化,因爲我在「final.c」之前的數據幀列表上融化了)。具體而言,當L1 = 1或5時,子集是當設置= 1時變量=「norm.n」&。這產生了兩個直方圖,我按顏色分割。
我想要做的是設計一個生成多個圖的函數。這些圖包括: 直方圖爲每個變量(final.c中的變量)繪製「板塊」(final.c中的L1)1到板塊5-30。這將不得不按照集合進行分組,其中有2個(集合1和集合2)
因此,這會生成26個(板塊比較數量)X 80(final.c中的變量數量)= 2080地塊。我將子集的變量列表,使繪圖更易於管理,但想法應該是一樣的。
對於這個問題的緣故讓剛剛所說的變量在這個例子中,V1 ... V80
感謝您的任何和所有幫助,我會定期檢查任何可能不是很清楚。
EDIT ::
繼在評論的建議,我做了一個簡單的for循環,以產生(在final.c L1)的比較對每個板圖,它進入如下:
for(i in 5:10){
var <- "norm.n"
plate <- c(1, i)
dat <- final.c
day <- 1
plot <- ggplot(subset(dat, variable %in% var & L1 %in% plate & set %in% day),
aes(value, fill = factor(L1))) + geom_histogram()
setwd("~/Dropbox/Andersen lab/LabFolders/Stefan/testplots/")
ggsave(filename = paste(var, i, ".jpg", sep = ""), plot = plot, height=4, width=8, units="in", dpi=300)
}
這給我6個直方圖比較來自final.c的兩個不同的L1值。我可以很容易地擴展這一點,使所有的板塊比較(例如(我在5:30))。
以下是剩餘的問題 - 如何循環通過印版並同時通過變量。 final.c中的「變量」列是一組79個級別的因子。我想要做的是循環這些因素,但我不知道如何去做。像如下:
for(i in 5:10){
var <- ***LOOP THROUGH VARIABLES COLUMN IN final.c***
plate <- c(1, i)
dat <- final.c
day <- 1
我只是不確定有關此的語法。
確切位置在哪裏,你卡住了?你有沒有嘗試在'for'循環中包裝這個過程來穿過你想要繪製的幾組印版?嘗試將你的問題分解成幾部分,並一次處理一個問題。 – Gregor
@shujaa,我已添加對該問題的編輯以解決您的問題。我覺得這讓我更加清楚。謝謝。 – user2813055