R 轴下标数据帧

R axis subscribt dataframe

我的轴在我的数据框之后自动调用,我想要 _all 以ST_all为下标。如何在不破坏数据帧的情况下实现 expression()

boxplot(data.frame(ST_all=CV_STrel$STrel*100,ST=c(CV_STrelMLTS$STrel,NA,NA)*100,F_all=CV_Frel$Frel*100,F=c(CV_FrelMLTS$Frel,NA,NA)*100,IM_all=CV_IMrel$IMrel*100,IM=c(CV_IMrelMLTS$IMrel,NA,NA)*100,L_all=CV_Lrel$Lrel*100,L=c(CV_LrelMLTS$Lrel,NA,NA)*100),cex.lab=1,ylab="CV [%]",col=gray((1:8)/10),outline=TRUE,ylim=c(0,14))  

set.seed(1);
N <- 20;
low <- 0;
high <- 14/100;
CV_STrel <- data.frame(STrel=runif(N,low,high));
CV_STrelMLTS <- data.frame(STrel=runif(N-2,low,high));
CV_Frel <- data.frame(Frel=runif(N,low,high));
CV_FrelMLTS <- data.frame(Frel=runif(N-2,low,high));
CV_IMrel <- data.frame(IMrel=runif(N,low,high));
CV_IMrelMLTS <- data.frame(IMrel=runif(N-2,low,high));
CV_Lrel <- data.frame(Lrel=runif(N,low,high));
CV_LrelMLTS <- data.frame(Lrel=runif(N-2,low,high));

pd <- data.frame(
    ST_all=CV_STrel$STrel*100,
    ST=c(CV_STrelMLTS$STrel,NA,NA)*100,
    F_all=CV_Frel$Frel*100,
    F=c(CV_FrelMLTS$Frel,NA,NA)*100,
    IM_all=CV_IMrel$IMrel*100,
    IM=c(CV_IMrelMLTS$IMrel,NA,NA)*100,
    L_all=CV_Lrel$Lrel*100,
    L=c(CV_LrelMLTS$Lrel,NA,NA)*100
);

boxplot(
    pd,
    cex.lab=1,
    ylab="CV [%]",
    col=gray((1:8)/10),
    outline=TRUE,
    ylim=c(0,14),
    axes=F
);
axis(1,at=seq_along(pd),labels=parse(text=sub(perl=T,'_(.*)','[\1]',names(pd))));
axis(2);