迭代R中每列的绘图

时间:2014-02-06 15:51:52

标签: r plot

我想为此数据集中的每一列(最后一列除外)制作qqplot:

data("pottery", package = "HSAUR2")

这是我到目前为止所做的,但它只绘制了最后一栏:

par(mfrow=c(3,3))
for (i in ncol(pottery[, 1:9])){
    qqnorm(pottery[, i], main = names(pottery[i]))
    qqline(x)
}

我认为这不应该很难,但我不确定我错过了什么。

一如既往地谢谢。

2 个答案:

答案 0 :(得分:1)

par(mfrow=c(3,3))
for (i in 1:ncol(pottery[,1: ncol(pottery) - 1 ])){  
qqnorm(pottery[, i], main = names(pottery[i]))
   qqline(pottery[, i])
}

我在你的剧本中改变了两件事。我在1:ncol(陶器)意味着你想要从一开始就到那个范围,无论有多少列。当你说我在ncol(陶器)时,我刚才说,我在最后一栏。然后我写了陶器[,ncol(陶器) - 1],说你想忽略最后一栏。

答案 1 :(得分:0)

使用ggplot2tidyr将数据从宽转换为长:

library(tidyverse)
gather(pottery, condition, measurement, Al2O3:BaO, factor_key = TRUE) %>%
  ggplot(aes(sample = measurement)) +
  facet_wrap(~ condition, scales = "free") +
  stat_qq() +
  stat_qq_line()

enter image description here