首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改process.capability绘图中的标题

更改process.capability绘图中的标题
EN

Stack Overflow用户
提问于 2019-12-18 01:43:30
回答 2查看 181关注 0票数 0

我正在使用qcc包。我在循环中为多个材质运行了一个简单的process.capability图。当它在列中循环时,绘图的标题始终是df.1i,而不是列名。

代码语言:javascript
复制
process.capability(qcc(df.1[i], type="xbar.one"), nsigmas = 3, spec.limits = c(NA, 20), add.stats = T)

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

代码语言:javascript
复制
process.capability(qcc(df.1$Aluminum, type="xbar.one"), nsigmas = 3, spec.limits = c(NA, 20), add.stats = T)

完整的循环如下:

代码语言:javascript
复制
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()
}
EN

回答 2

Stack Overflow用户

发布于 2019-12-18 07:09:31

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

代码语言:javascript
复制
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“)

票数 1
EN

Stack Overflow用户

发布于 2019-12-18 22:28:14

自从我发布了这篇文章后,Luca添加了一个新的功能来编辑标题,这就消除了对此的需求。为此,我在函数中简单地添加了一个标题调用。

代码语言:javascript
复制
title = paste(colnames(df.1)[i]))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59379498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档