R 循环ggtitle中的字符值

R 循环ggtitle中的字符值,r,ggplot2,tidyeval,R,Ggplot2,Tidyeval,我有一个由4个图组成的循环,其中有一个字符列表,如“a,b,c,d”,因此在每个图的标题中我想要“a”,“b”,“c”或“d”。但是,当我运行代码时,所有标题中都会出现“a” 这是我正在使用的数据的dput structure(list(Point = c(5, 6, 7, 8), La = c(535, 565, 532, 587 ), Ce = c(45, 46, 58, 43), Pr = c(56, 54, 43, 50), Nd = c(23, 28, 18, 26)), class

我有一个由4个图组成的循环,其中有一个字符列表,如“a,b,c,d”,因此在每个图的标题中我想要“a”,“b”,“c”或“d”。但是,当我运行代码时,所有标题中都会出现“a”

这是我正在使用的数据的dput

structure(list(Point = c(5, 6, 7, 8), La = c(535, 565, 532, 587
), Ce = c(45, 46, 58, 43), Pr = c(56, 54, 43, 50), Nd = c(23, 
28, 18, 26)), class = c("spec_tbl_df", "tbl_df", "tbl", "data.frame"
), row.names = c(NA, -4L), spec = structure(list(cols = list(
Point = structure(list(), class = c("collector_double", "collector"
)), La = structure(list(), class = c("collector_double", 
"collector")), Ce = structure(list(), class = c("collector_double", 
"collector")), Pr = structure(list(), class = c("collector_double", 
"collector")), Nd = structure(list(), class = c("collector_double", 
"collector"))), default = structure(list(), class = c("collector_guess", 
"collector")), skip = 1), class = "col_spec"))
到目前为止我找到的代码。只有cols不循环浏览标题。代码的其余部分工作正常。我还是一个初学者,所以谢谢你的时间和耐心

acq <- select(X1, La:Nd)

##loop##

gg <- for (ii in acq){
  cols <- names(X1)[2:5]
  m <-mean(ii)
  sds <- sd(ii)
  m1 <- mean(ii)+1
  m2 <-mean(ii)-1

  ##plot##  
  g <- ggplot(X1,aes_string(x="Point",y="ii")) +
    ggtitle(paste(cols,"\n",m,"\n",sds,"\n")) +
    theme(plot.title = element_text(hjust = 0.5)) +
    geom_line() + geom_hline(aes(yintercept=mean(ii))) + ylab('') + xlab('')+
    geom_hline(aes(yintercept=m1),linetype=2)  + 
    geom_text(x=8,y=m1,label="10%",vjust=-1) +
    geom_hline(aes(yintercept=m2),linetype=2) + 
    geom_text(x=8,y=m2,label="10%",vjust=-1)

  print(g)  
}

实际上不建议您使用它们来设置循环的
。最好遍历列名,然后相应地从
acq
数据帧中提取该列

库(tidyverse)
acq 123.75 4.349329 24.75 22.75
绘图列表[[1]]

plot_list[[2]]

#奖励:合并所有绘图
图书馆(cowplot)
绘图网格(绘图列表=绘图列表,
标签='自动',
nrow=2,
align='hv',
轴='tblr')


由(v0.2.1.9000)于2019-03-16创建的不建议使用为循环设置
的方式。最好遍历列名,然后相应地从
acq
数据帧中提取该列

库(tidyverse)
acq 123.75 4.349329 24.75 22.75
绘图列表[[1]]

plot_list[[2]]

#奖励:合并所有绘图
图书馆(cowplot)
绘图网格(绘图列表=绘图列表,
标签='自动',
nrow=2,
align='hv',
轴='tblr')


(v0.2.1.9000)于2019-03-16创建,请使用
dput(df)
@Tung的输出编辑您的问题。很抱歉,该代码太复杂,我无法理解。@Yria:您能否通过共享您的数据样本使您的问题重现,以便其他人可以帮助(请不要使用
str()
head()
或屏幕截图)?您可以使用和包来帮助您实现这一点。另见&@Tung谢谢你的建议。我添加了dput、实际代码和我用来构建代码的实际数据。例如,请使用
dput(df)
@Tung的输出编辑您的问题。很抱歉,该代码太复杂了,我无法理解。@Yria:您能通过共享数据样本使您的问题重现,以便其他人可以帮助您吗(请不要使用
str()
head()
或屏幕截图)?您可以使用和包来帮助您。另请参阅&@Tung谢谢您的建议。我添加了dput、实际代码和我用于构建代码的实际数据。整理评估资源:感谢您花时间帮助我。我尝试运行它,但它给了我一个错误,不幸的是:is.data.frame(x)中的错误:(列表)对象不能强制为“double”类型。此外:警告消息:平均值。默认值(acq[,当前值]):还有一条从冒号后面翻译过来的消息:参数既不是数字也不是逻辑。返回NA值我将进一步研究tidy方法它看起来更实用,谢谢你的提示@TungI还有最后一个问题,如果你不介意的话。如何在第一个代码中在一个pdf中生成所有绘图?tidy评估资源:谢谢感谢您花时间帮助我。我尝试运行它,但它给了我一个错误,不幸的是:is.data.frame(x):(list)对象中的错误无法强制键入“double”。此外:警告消息:in mean.default(acq[,current\u col]):还有一条从冒号后面翻译过来的消息:参数既不是数字也不是逻辑。返回NA值我会更深入地研究整洁的方法。它看起来更实用,谢谢你的提示@TungI还有最后一个问题,如果你不介意的话。我如何在第一个代码中在一个pdf中生成所有绘图?
~Point, ~La, ~Ce, ~Pr, ~Nd,
     5, 535,  45,  56,  23,
     6, 565,  46,  54,  28,
     7, 532,  58,  43,  18,
     8, 587,  43,  50,  26