我正在尝试为数据框的每列创建一个绘图。在图的标题中,我想插入列名。但我不清楚如何循环列名称。
`
snp1 <- runif(10,0,1)
snp2 <- runif(10,0,1)
snp3 <- runif(10,0,1)
snp4 <- runif(10,0,1)
pops <- paste('pop',1:10,sep='')
freq<- data.frame(snp1, snp2, snp3, snp4)
rownames(freq) <- pops
`
`freq
snp1 snp2 snp3 snp4
pop1 0.4174916 0.16731405 0.3128548 0.8911312
pop2 0.6965112 0.38021753 0.9039974 0.7716086
pop3 0.6993367 0.35984906 0.5455272 0.4824148
pop4 0.5274188 0.23394308 0.8256183 0.5394379
pop5 0.1561838 0.57830706 0.3515259 0.9654348
pop6 0.1712315 0.05702597 0.2600516 0.7401471
pop7 0.6950924 0.15866269 0.1411592 0.3601718
pop8 0.1360697 0.96311812 0.3862654 0.5717191
pop9 0.4941322 0.63638984 0.3307210 0.5176871
pop10 0.1986985 0.63893809 0.9380498 0.2106029
`
`
library(ggplot2)
pdf('snp_plots.pdf')
apply(freq, 2, function(x) qplot(1:10, x, ylim=c(0,1), main=colnames(freq)))
dev.off()
`
答案 0 :(得分:1)
您可以使用map2
中的purrr
代替apply
。
library(purrr)
library(ggplot2)
map2(.x = freq, .y = names(freq), ~qplot(1:10, .x, ylim = c(0, 1), main = .y))
修改强>
我们可以使用purrr::imap
代替,这是map2(x, names(x), ...)
imap(.x = freq, ~qplot(1:10, .x, ylim = c(0, 1), main = .y))