在process.capability图中更改标题

时间:2019-12-17 17:43:30

标签: r qcc

我正在使用qcc软件包。我正在循环中针对多种材料运行一个简单的process.capability图。当它遍历各列时,图的标题始终是df.1 [i],而不是列名。

process.capability(qcc(df.1[i], type="xbar.one"), nsigmas = 3, spec.limits = c(NA, 20), add.stats = T)

或者相反,是否仍可以在循环中使用实际的列名?

process.capability(qcc(df.1$Aluminum, type="xbar.one"), nsigmas = 3, spec.limits = c(NA, 20), add.stats = T)

下面的完整循环:

for (i in 5:length(colnames(df.1))){
    df.2 <- df.1 %>%
    rename(test_metal = colnames(df.1[i]))
  test_group = with(df.2, qcc.groups(test_metal, batch_num))
  png("test_plot.png")
  q1 <- qcc(test_group, type = "xbar.one", nsigmas = 3, chart.all = F, ylim = c(0, max(df.1$Aluminum)), title = paste(colnames(df.1)[i]))
  dev.off()
}

2 个答案:

答案 0 :(得分:1)

您可以结合使用evalsubstitute来以正确的形式调用process.capability。我使用了qcc包中的示例:

library(qcc)

df.1 <- pistonrings
df.1 = cbind(pistonrings,
replicate(3,pistonrings$diameter+rpois(nrow(pistonrings),3))
)
colnames(df.1)[4:6] = c("d1","d2","d3")
pdf("test.pdf")
for (i in colnames(df.1)[4:6]){
  eval(
  substitute(
  process.capability(qcc(X, type="xbar.one"), 
  nsigmas = 3, spec.limits = c(NA, 20), add.stats = T),
  list(X=as.name(i))
  ),df.1)
}
dev.off()

简要说明,首先,您要使用替换用您要​​绘制的别名替换“ X”。然后,这仍然是一个表达式,您必须在其上使用eval以及data.frame df.1。 (类似于您之前使用的“ with”)

enter image description here

答案 1 :(得分:0)

自从我发布此内容以来,Luca添加了一项新功能来编辑标题,从而消除了对此的需要。因此,为此,我仅在函数中添加了一个标题调用。

title = paste(colnames(df.1)[i]))